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

.htaccess文件玩转Rewrite

WBOY
WBOYOriginal
2016-06-21 08:51:29776browse

刚玩网页的时候,写的都是静态页 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>



Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn