重写引擎开启
我有以下代码:
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]
此代码根据情况将 urls 转换为参数路径和文章。所有好的和坏的 url 请求都被路由到 index.php,文件夹 files/ 中的文件除外。
我对最后一行代码有疑问。它主要用于所有错误的 url(所有其他的都在前面处理过)。有了这个规则,它开始一遍又一遍地循环,因为所有的 url 都符合这个规则。该规则必须匹配一次或从不匹配,但没有 [END] 我无法设计。我有旧版本的 apache (2.2),所以我不能使用这个方向。
我尝试过的解决方案是这样的:
RewriteCond %{QUERY_STRING} !^.*path=([^&]*).*$
RewriteCond %{REQUEST_URI} !^/((files|design)/.+)$
RewriteRule ^(.+)$ index.php?path=$1 [QSA]
但不能成功。