.htaccess 重定向规则在与 rewirite 规则一起使用时不起作用(没有任何反应)


.htaccess redirect rule does not work (nothing happens) when used with rewirite rule

我正在尝试使用 .htaccess 将旧 URL 重写为新 URL,同时将任何请求从旧重定向到新请求。

我的重写规则效果很好,但是当我添加重定向规则时,没有任何反应。

我可以请您查看代码并让我知道需要更改的内容:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^new/page$ /old_page.php?mode=2 [L]
Redirect /old_page.php?mode=2 /new/page

谢谢!

你想要这样的东西:

RewriteCond %{THE_REQUEST} ' /+old_page'.php'?mode=2
RewriteRule ^ /new/page? [L,R]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^new/page$ /old_page.php?mode=2 [L]

不能使用Redirect的两个原因:

  1. 无法与Redirect中的查询字符串匹配
  2. 正在匹配您重写的内容。这将导致重定向循环。

因此,您需要与%{THE_REQUEST}变量进行匹配。

您还需要在 apache 的标签中设置 AllowOverride All