【发布时间】:2015-10-26 00:23:25
【问题描述】:
我正在实施一些 mod_rewrite .htaccess 规则来创建干净的 URL。具体来说,当用户使用 GET 请求提交表单时,我试图确保通过 301 清除 URL(目前使用 302 进行测试以避免缓存)。
我的问题是我的规则正在创建一个无限循环。
重定向用户获取请求的规则(避免用户在浏览器中看到 ?query1=&query2=):
RewriteCond %{QUERY_STRING} ^query1=(.*)&query2=(.*)$ [NC]
RewriteRule ^results.php$ /results/%1/%2? [R=302,NC,L]
但是,我还有一条规则可以将任何访问 /results/ 的人格式化为转发到 results.php(例如,从“返回结果”链接):
RewriteRule results/(.*)/(.*)$ results.php?query1=$1&query2=$2 [NC,L]
完整的 .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^query1=(.*)&query2=(.*)$ [NC]
RewriteRule ^results.php$ /results/%1/%2? [R=302,NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule results/(.*)/(.*)$ results.php?query1=$1&query2=$2 [NC,L]
</IfModule>
关于如何解决此问题的任何建议?
谢谢!
【问题讨论】:
标签: apache .htaccess mod-rewrite redirect