.htaccess:“;“重定向永久性”;回退到“a”;“重写规则”;
我有一个网上商店,我们在那里切换子目录。从“/shop”到根“/”。此外,一些产品和类别名称也会更改 我想将一些特定的URL重定向到较新的URL。例如:.htaccess:“;“重定向永久性”;回退到“a”;“重写规则”;,.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,我有一个网上商店,我们在那里切换子目录。从“/shop”到根“/”。此外,一些产品和类别名称也会更改 我想将一些特定的URL重定向到较新的URL。例如: www.domainname.de/shop/product\u abc至www.domainname.de/product\u abc\u v2 为此,我使用.htaccess文件中的重定向永久声明 在下一步中,我希望对所有其他URL进行回退,如下所示: www.domainname.de/shop/XXXXX 所以我写了这个重写规则: Re
www.domainname.de/shop/product\u abc
至www.domainname.de/product\u abc\u v2
为此,我使用.htaccess文件中的重定向永久
声明
在下一步中,我希望对所有其他URL进行回退,如下所示:
www.domainname.de/shop/XXXXX
所以我写了这个重写规则:
RewriteCond %{REQUEST_URI} ^/shop/(.*)
RewriteRule ^(.*)$ http://www.domainname.de/ [r=301,L]
RewriteRule ^(.*)/$ $1 [R=301,L]
现在我的问题:我将重写规则放在.htaccess文件的底部,以便在使用重写规则之前使用重定向永久
-代码。但无论如何,重写规则总是被采用。这个问题有什么解决办法吗
非常感谢 解决方案是只使用mod_rewrite。当您将mod_alias(
Redirect Permanent
)和mod_rewrite(RewriteRule
)指令混合在一起时,这两个模块将应用于每个URL,并且在应用这两个模块的情况下,您最终会出现一些意外行为
您需要做的第一件事是将重定向
更改为重写
:
Redirect Permanent /shop/product_abc /shop/product_abc_v2
致:
然后,您需要确保新规则位于正确的位置。顺序与重写规则有关。我认为您错误地认为.htaccess中这些指令的顺序会影响它们的求值顺序。当然,你也可以简单地通过使用
重写规则
而不是重定向
来解决这个问题。你能展示你完整的.htaccess吗?@CBroe谢谢。另外@Jon Lin回答这个问题。用RewriteRule
编写所有东西解决了我的问题。但是我更喜欢使用mod_alias指令中更简单的语法。非常感谢!我更喜欢使用更简单的语法,比如mod_别名(Redirect Permanent)。但我知道我理解为什么这不起作用。感谢您的快速帮助!:)我编辑我的.htaccess,将代码放在正确的位置,然后瞧它的工作结果:)
RewriteRule ^shop/product_abc(.*)$ /shop/product_abc_v2$1 [L,R=301]