Apache - url_rewrite - 改变查询参数的设定位置

来源:互联网 发布:典韦怎么玩 知乎 编辑:程序博客网 时间:2024/05/13 18:22

Apache - url_rewrite - 改变查询参数的设定位置

如下的.access文件
RewriteEngine on
RewriteRule ^info/(/d+)-(/d+)-(/d+)/.html dispbbs.php/?boarid=$1/&id=$2/&page=$3 [L]
可以把如下形式的url
info/1-2-3.html
改写为如下形式
dispbbs.php?boardid=1&id=2&page=3
注意:RewriteRule中的正则表达式需要考虑加上^匹配字符串开头
在本例中,如果不加上^匹配字符串开头,.access文件如下:
RewriteEngine on
RewriteRule ^info/(/d+)-(/d+)-(/d+)/.html dispbbs.php/?boarid=$1/&id=$2/&page=$3 [L]
则不仅匹配如下形式的url
info/1-2-3.html
也会匹配如下形式的url
any_url/info/1-2-3.html
如果加上^匹配字符串开头,则只匹配如下形式的url
info/1-2-3.html
不会匹配如下形式的url
any_url/info/1-2-3.html
注意:RewriteRule中的正则表达式中匹配.号时需要使用/.转义
在RewriteRule的正则表达式中,.用于匹配任意一个字符。如果仅需要匹配.字符,则需要使用/.转义。
在本例中,如果不使用/.转义,.access文件如下:
RewriteEngine on
RewriteRule ^info/(/d+)-(/d+)-(/d+).html dispbbs.php/?boarid=$1/&id=$2/&page=$3 [L]
则不仅匹配如下形式的url
info/1-2-3.html
也会匹配如下形式的url
info/1-2-3-html
如果使用/.转义,则只匹配如下形式的url
info/1-2-3.html
不会匹配如下形式的url
info/1-2-3-html

[apache关键词]

apache

[mod_rewrite模块关键词]

httxt2dbm
mod_rewrite
ornext
RewriteBase
RewriteCond
RewriteEngine
RewriteLog
RewriteLogLevel
RewriteMap
RewriteRule

[mod_rewrite模块常见用途]

改变查询参数的设定位置

[mod_rewrite模块标记]

RewriteLog, 设置重写引擎日志的文件名

RewriteRule, 设置重写规则

[mod_rewrite模块常见问题]

RewriteRule中的正则表达式需要考虑是否要加上^(匹配字符串开头)

RewriteRule中的正则表达式需要考虑是否要对.转义(匹配任意字符还是仅匹配.字符)

RewriteRule中的R标记用于发送重定向

通过检查Referer避免静态图片盗链对性能有严重影响

[apache其他常见问题]

RedirectMatch用于简单的重定向