1
RewriteRule ^cart.php(.*?) https://www.DOMAIN.com/buy-now/$1 [R=301,L]
RewriteRule ^buy-now/(.*?) cart.php$1 [QSA]
这会创建一个重定向循环。我要的是为cart.php重定向到/买进现在/(携带查询字符串)和/买进现在/实际上解析为cart.php。htaccess重定向循环目录到php文件
RewriteRule ^cart.php(.*?) https://www.DOMAIN.com/buy-now/$1 [R=301,L]
RewriteRule ^buy-now/(.*?) cart.php$1 [QSA]
这会创建一个重定向循环。我要的是为cart.php重定向到/买进现在/(携带查询字符串)和/买进现在/实际上解析为cart.php。htaccess重定向循环目录到php文件
是的,这肯定会导致循环。您将需要使用%{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接收到原始请求,它的一些重写规则执行后没有得到覆盖。
不要以为'(。*)'是必需的,因为他希望保留查询字符串,所以可能只需向其中添加'QSA',因为查询字符串在'(。*)'中不可用。 – Prix
好的谢谢。我正在尝试类似的东西,但由于某种原因,我使用了%{REQUEST_URI} ...错误的变量。 – b747fp
@Prix:事实上'QSA'甚至不需要,因为OP没有在查询字符串中传入'$ 1'。 – anubhava