2014-02-09 26 views
1
RewriteRule ^cart.php(.*?) https://www.DOMAIN.com/buy-now/$1 [R=301,L] 
RewriteRule ^buy-now/(.*?) cart.php$1 [QSA] 

这会创建一个重定向循环。我要的是为cart.php重定向到/买进现在/(携带查询字符串)和/买进现在/实际上解析为cart.phphtaccess重定向循环目录到php文件

回答

0

是的,这肯定会导致循环。您将需要使用%{THE_REQUEST}来避免此循环。

让你的规则是这样的:

RewriteEngine On 

RewriteCond %{THE_REQUEST} /+cart\.php [NC] 
RewriteRule ^cart\.php(.*)$ /buy-now/$1 [R=301,L,NC] 

RewriteRule ^buy-now/(.*)$ /cart.php$1 [L,NC] 
  • THE_REQUEST变量代表从您的浏览器Apache接收到原始请求,它的一些重写规则执行后没有得到覆盖。
+0

不要以为'(。*)'是必需的,因为他希望保留查询字符串,所以可能只需向其中添加'QSA',因为查询字符串在'(。*)'中不可用。 – Prix

+0

好的谢谢。我正在尝试类似的东西,但由于某种原因,我使用了%{REQUEST_URI} ...错误的变量。 – b747fp

+0

@Prix:事实上'QSA'甚至不需要,因为OP没有在查询字符串中传入'$ 1'。 – anubhava