经过几个小时的工作,我已经创建了以下.htaccess文件,一切似乎都正常工作,但是我是mod_rewrite新手,我认为我的代码是业余的,所以我正在寻找需要改进的地方。
例如,我认为如果我在规则的末尾使用L,其余的重写将被忽略,但查看重写日志,我发现它们并非如此,存在多个不需要的模式匹配,这肯定会减慢一切。
我也有一本书说C会链接重写条件,但是我的apache抛出了
发布于 2011-08-15 22:08:29
[L]
标志确实阻止了进一步的规则处理,但是重写的url可能会再次传回您的所有规则,从而导致日志中出现多个条目请参阅手册页面http://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_l
很多重写规则只是对不同的数据做同样的事情,并且可以压缩成一个正则表达式,我已经做了一些,但你可以做整个列表。
RewriteRule ^/([dprcmlfb]|members|lnli|freelisting)/(.*)$ /$1\.php/$2 [L]
如果您还添加了类似以下内容的RewriteCond
RewriteCond %{REQUEST_URI} !^/[^/]+\.php
要防止为php文件请求触发规则,请执行以下操作
发布于 2011-08-15 22:01:15
您可以添加MultiViews选项,而不是像下面这样的规则:
RewriteRule ^/d/(.*)$ /d\.php/$1 [L]
如果没有其他规则干扰,MultiViews会正确地将/d/stuff解释为对d.php的请求。
https://stackoverflow.com/questions/7071227
复制相似问题