Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess:“;“重定向永久性”;回退到“a”;“重写规则”;_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

.htaccess:“;“重定向永久性”;回退到“a”;“重写规则”;

.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

我有一个网上商店,我们在那里切换子目录。从“/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

所以我写了这个重写规则:

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]