在线
客服

在线客服
尊敬的客户,我们24小时竭诚为您服务 公司总机: 0755-83312037 (32条线)

客服
热线

0755-83312037 (32条线)
7*24小时客服服务热线

?

关注
微信

关注官方微信
TOP

返回
顶部

.htaccess文件玩转Rewrite

发布时间:2019-04-13浏览次数:807 <p> </p> <table style="BORDER-RIGHT: #cccccc 1px dotted; TABLE-LAYOUT: fixed; BORDER-TOP: #cccccc 1px dotted; BORDER-LEFT: #cccccc 1px dotted; BORDER-BOTTOM: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0"><tbody><tr> <td style="WORD-WRAP: break-word" bgcolor="#fdfddf"> <font color="#ff0000">WebjxCom提示:</font><font color="#000000">.htaccess文件玩转Rewrite.</font> </td> </tr></tbody></table> <p>刚玩网页的时候,写的都是静态页 http://uicss.cn/about.htm 这样的结构。<br>后来想换成 http://uicss.cn/about/<br>但是又因为不熟悉rewrite,做了如下的调整,手动建立了一堆的文件夹:</p> <p><img class="aligncenter size-full wp-image-14722" title="mysite" alt="" src="http://www.webjx.com/files/allimg/120625/0114380.png" width="367" height="221"></p> <p>这样的目录结构,维护起来相当麻烦。每次新加一个页面,都要开一个文件夹。<br>其实采用左边那套结构部署上去,服务器稍做设置,就可以支持我们想要的URL效果。</p> <h5>如何玩 rewrite </h5> <p>首先看看自己的服务器是否支持 .htaccess<br>如果支持这货,就不用每次写条规则就重启一次服务器了,便于测试。</p> <p><code><font face="NSimsun">redirect 301 /test.htm http://uicss.cn/</font></code></p> <p>成功的话,当你访问 xxx.com/test.htm 的时候,会自动跳到我的博客。<br>不成功的话,需要开启一下 .htaccess :</p> <ol> <li>打开 \conf\httpd.conf ,查找 <strong class="red">#</strong>LoadModule rewrite_module,将#号去掉,加载该模块 </li> <li>打开 \conf\extra\httpd-vhosts.conf ,查找 AllowOverride <strong class="red">None</strong>,将 None 变更为 All </li> </ol> <p>环境准备完成后,还需要对“模式匹配”中特殊字符在rewrite的解读做一下了解:</p> <p><code><font face="NSimsun">* 代表前面0或更多个字符<br>+ 代表前面1或更多个字符<br>? 代表前面0或1个字符<br>^ 代表字符串的开始位置<br>^ 在方括号里代表“非”,例如[^/]代表非斜杠。<br>$ 代表字符串结束的位置<br>. 代表任何字符(也就是通配符)<br>\ 取消后面字符的特殊意思,转为原义字符。<br><span class="float_right">&#8212;&#8212; 这部分的理解出自《SEO艺术》第六章末</span><br></font></code></p> <p>开始干吧,打开.htaccess的rewrite<br><code><font face="NSimsun">RewriteEngine on</font></code></p> <p>把 xxx.htm 文件 替换为 xxx/<br><code><font face="NSimsun">RewriteRule ^(.*)\<strong class="red">/</strong>$ /$1.htm [L]</font></code></p> <p>再给一个例子加深理解,这是将服务器上的 xxx.php 文件 替换成 xxx.html<br><font face="NSimsun"><code>RewriteRule ^(.*)\<strong class="red">.html</strong>$ /$1.php [L]</code><br><span id="more-14719"></span></font></p> <h5>更多用法:</h5> <p>让所有访问 www.uicss.cn/xxx/ 的用户 跳转到 uicss.cn/xxx/<br><code><font face="NSimsun">RewriteCond %{HTTP_HOST} ^www.uicss.cn [NC]<br>RewriteRule ^(.*)$ http://uicss.cn/$1 [L,R=301]</font></code></p> <p>对指定目录开启转向的代码:<br><code><font face="NSimsun">RewriteBase /top/</font></code></p> <p>带搜索参数的转向:<br><code><font face="NSimsun">RewriteRule ^search/(.+)?$ /index.php?s=$1 [QSA,L]</font></code></p> <p>目录末尾补斜线:<br><code><font face="NSimsun">RewriteRule ^(.+[^/])$ /$1/ [R]</font></code></p>