2015-01-26 72 views
1

我想用旧的URL重写一个新的.htaccess,并在同一时间重定向到旧的任何请求。.htaccess重定向规则不起作用(没有任何反应)当与rewirite规则一起使用

我的重写规则很好,但是当我添加一个重定向规则时,什么都不会发生。

我可以问你寻找到的代码,让我知道需要改变什么:

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 

谢谢!

回答

2

你想是这样的:

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}变量。

+0

感谢您的工作代码和它的解释。现在我知道我错了。再次感谢! – BradG 2015-01-26 22:07:51

0

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