1
RewriteEngine叙述上Apache 2.2 mod重写循环。如何更换[END]
我有以下代码:
RewriteCond %{REQUEST_URL} ^$
RewriteRule ^files/(.*)$ getfile.php?file=$1 [L]
RewriteRule ^(.+)/index([0-9]*).html$ index.php?path=$1/&page=$2 [QSA]
RewriteRule ^(.+).html$ index.php?path=$1.html [QSA]
RewriteRule ^(.+)/(.+).htm$ index.php?path=$1/&article=$2.htm [QSA]
RewriteRule ^(.+/)$ index.php?path=$1 [QSA]
RewriteRule ^(.+)$ index.php?path=$1 [QSA]
该代码转换网址,根据情况参数路径和文章。除文件夹文件/中的文件外,所有正常和错误的url请求均被路由到index.php。
我有问题的最后一行代码。它主要针对所有不良网址(所有其他网址都在早期处理)。有了这个规则,它会开始一遍又一遍地循环,因为所有的url都符合这个规则。这个规则必须匹配一次或从不匹配,但没有[END]我无法设计。我有旧版本的Apache(2.2),所以我不能使用这个方向。
解决方案为了这个,我曾尝试是这样的:
RewriteCond %{QUERY_STRING} !^.*path=([^&]*).*$
RewriteCond %{REQUEST_URI} !^/((files|design)/.+)$
RewriteRule ^(.+)$ index.php?path=$1 [QSA]
,但不能得逞。
谢谢你的回答和对不起迟到评论。我很快就会尝试这个(我的工作超负荷)。 它看起来像一个解决方案。 – SlovaN
是的!这行得通!非常感谢你! (不幸的是,我不能投票的答案 - 抱歉) – SlovaN