关于.htaccess文件的RewriteRule多个$1,$2匹配的正则写法的一个例子

other 函数语法

本站开始的时候, 规划http://yishouce.com/book/1的时候,类似http://yishouce.com/book/2/2010100这样的url后面没加.html后缀.

在过啦一段时间后, 心血来潮, 想在url后面加.html结尾,做个伪静态化. 未来让搜索引擎平缓过渡,决定用.htaccess文件进行301重写(vps改为了空间, 没有修改apache配置的权限了).

.htaccess语法大致如下:

方法一:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} ^/book/\d+/\d+$
RewriteRule ^(.*)$ $1.html [R=301,L]

其中, RewriteCond中的^/book/\d+/\d+$是普通的正则,表示匹配后面的数字, RewriteRule中的L标识表示当前的RewriteCond中的重写完结(这样就不会被后面的重写规则再次改变).

特别要注意的是: 由于设置了重写是当前开始(RewriteBase /), REQUEST_URI是包含斜杠/的url后面的字符串.

方法二: 

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_URI} ^/book/\d+/\d+$

RewriteRule ^book/(\d+)/(\d+)$ /book/$1/$2.html [R=301,L]

方法二的展示是为了更广泛的重写,比如将book目录改为其他目录,同时展示多个匹配项的重写.

注意:RewriteRule中匹配项的开始是不带斜杠/的url. 这里跟后面的重写位置和RewriteCond都不一样.


欢迎转载,转载请注明来自一手册:http://yishouce.com/article/21.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1