我在工作数小时后创建了以下.htaccess文件, 一切似乎都运行正常,但我是mod_rewrite的新手,我认为我的代码是业余的,所以我正在寻找改进的东西。
例如,我想如果我在规则末尾使用[L],其余的重写将被忽略,但是看着重写日志,我发现它们不是,有多个不需要的模式匹配肯定会放慢一切。
我还有一本书说[C]会链接重写条件,但我的apache会抛出
答案 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]
如果您还添加了像
那样的RewriteCondRewriteCond %{REQUEST_URI} !^/[^/]+\.php
阻止针对php文件请求的规则触发