>php教程 >php手册 >.htaccess文件玩转Rewrite

.htaccess文件玩转Rewrite

WBOY
WBOY원래의
2016-06-21 08:51:29779검색

刚玩网页的时候,写的都是静态页 http://uicss.cn/about.htm 这样的结构。
后来想换成 http://uicss.cn/about/
但是又因为不熟悉rewrite,做了如下的调整,手动建立了一堆的文件夹:

这样的目录结构,维护起来相当麻烦。每次新加一个页面,都要开一个文件夹。
其实采用左边那套结构部署上去,服务器稍做设置,就可以支持我们想要的URL效果。

如何玩 rewrite

首先看看自己的服务器是否支持 .htaccess
如果支持这货,就不用每次写条规则就重启一次服务器了,便于测试。

<font face="NSimsun">redirect 301 /test.htm http://uicss.cn/</font>

成功的话,当你访问 xxx.com/test.htm 的时候,会自动跳到我的博客。
不成功的话,需要开启一下 .htaccess :

  1. 打开 \conf\httpd.conf ,查找 #LoadModule rewrite_module,将#号去掉,加载该模块
  2. 打开 \conf\extra\httpd-vhosts.conf ,查找 AllowOverride None,将 None 变更为 All

环境准备完成后,还需要对“模式匹配”中特殊字符在rewrite的解读做一下了解:

<font face="NSimsun">* 代表前面0或更多个字符<br>+ 代表前面1或更多个字符<br>? 代表前面0或1个字符<br>^ 代表字符串的开始位置<br>^ 在方括号里代表“非”,例如[^/]代表非斜杠。<br>$ 代表字符串结束的位置<br>. 代表任何字符(也就是通配符)<br>\ 取消后面字符的特殊意思,转为原义字符。<br><span class="float_right">—— 这部分的理解出自《SEO艺术》第六章末</span><br></font>

开始干吧,打开.htaccess的rewrite
<font face="NSimsun">RewriteEngine on</font>

把 xxx.htm 文件 替换为 xxx/
<font face="NSimsun">RewriteRule ^(.*)\<strong class="red">/</strong>$ /$1.htm [L]</font>

再给一个例子加深理解,这是将服务器上的 xxx.php 文件 替换成 xxx.html
RewriteRule ^(.*)\<strong class="red">.html</strong>$ /$1.php [L]

更多用法:

让所有访问 www.uicss.cn/xxx/ 的用户 跳转到 uicss.cn/xxx/
<font face="NSimsun">RewriteCond %{HTTP_HOST} ^www.uicss.cn [NC]<br>RewriteRule ^(.*)$ http://uicss.cn/$1 [L,R=301]</font>

对指定目录开启转向的代码:
<font face="NSimsun">RewriteBase /top/</font>

带搜索参数的转向:
<font face="NSimsun">RewriteRule ^search/(.+)?$ /index.php?s=$1 [QSA,L]</font>

目录末尾补斜线:
<font face="NSimsun">RewriteRule ^(.+[^/])$ /$1/ [R]</font>



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.