如何改进我的.htaccess mod_rewrite东西?

时间:2011-08-15 21:50:06

标签: regex apache .htaccess mod-rewrite

我在工作数小时后创建了以下.htaccess文件, 一切似乎都运行正常,但我是mod_rewrite的新手,我认为我的代码是业余的,所以我正在寻找改进的东西。

例如,我想如果我在规则末尾使用[L],其余的重写将被忽略,但是看着重写日志,我发现它们不是,有多个不需要的模式匹配肯定会放慢一切。

我还有一本书说[C]会链接重写条件,但我的apache会抛出

http://pastebin.com/62JyBXdS

2 个答案:

答案 0 :(得分:0)

您可以添加MultiViews选项,而不是像以下规则那样的规则:

RewriteRule ^/d/(.*)$ /d\.php/$1 [L]

如果没有其他规则干扰,MultiViews会正确地将/ d / stuff解释为对d.php的请求。

答案 1 :(得分:0)

[L]标志确实阻止了进一步的规则处理,但是重写的url可以再次通过所有规则传回,因此日志中有多个条目 - 请参阅手册页{{3} }

你的重写规则很多只用不同的数据做同样的事情,可以压缩成一个正则表达式,我做了一些,但你可以做整个列表。

RewriteRule ^/([dprcmlfb]|members|lnli|freelisting)/(.*)$ /$1\.php/$2 [L]

如果您还添加了像

那样的RewriteCond
RewriteCond %{REQUEST_URI} !^/[^/]+\.php

阻止针对php文件请求的规则触发