带有两个参数的.htaccess重定向到404页面

时间:2015-05-14 22:21:55

标签: apache .htaccess mod-rewrite url-rewriting

我想将/index.php?id=1&time=10重定向到/first-10

的.htaccess

RewriteEngine On
RewriteCond %{QUERY_STRING} id=1&time=10
RewriteRule ^index\.php$ /first-10/? [L,R=301]

当我访问/index.php?id=1&time=10重定向到/first-10/时,它是一个404页面。请注意最后的斜杠。

问题出在哪里?

2 个答案:

答案 0 :(得分:1)

您需要在内部将其重新修改为原始格式 您必须使用THE_REQUEST来避免无限循环

RewriteEngine On

RewriteCond %{THE_REQUEST} \s/(?:index\.php)?\?id=1&time=10\s [NC]
RewriteRule ^ /first-10? [R=301,L]

RewriteRule ^first-10$ /index.php?id=1&time=10 [L]
  • http://example.com/index.php?id=1&time=10http://example.com/?id=1&time=10都会重定向到http://example.com/first-10
  • http://example.com/first-10会在内部将其重写回/index.php?id=1&time=10

答案 1 :(得分:0)

如果确实问题是.htaccess,结果页面是正确的并且调用了重定向,我就陷入其中:

“?”首先是10 /和[L,R = ??? 或者/之后的第10个???