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

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

我正在尝试使用 .htaccess 将旧的 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. 中的查询字符串
  3. 您正在匹配您重写的内容。这将导致重定向循环。

因此您需要匹配 %{THE_REQUEST} 变量。

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