.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
:
- 您无法匹配
Redirect
中的查询字符串
- 您正在匹配您重写的内容。这将导致重定向循环。
因此您需要匹配 %{THE_REQUEST}
变量。
您还需要在 apache 的标签中设置 AllowOverride All
我正在尝试使用 .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
:
- 您无法匹配
Redirect
中的查询字符串
- 您正在匹配您重写的内容。这将导致重定向循环。
因此您需要匹配 %{THE_REQUEST}
变量。
您还需要在 apache 的标签中设置 AllowOverride All