.htaccess规则被覆盖

时间:2017-11-17 15:01:47

标签: php apache .htaccess mod-rewrite

我目前正在处理我正在处理的网站的问题。我正在将一个URL转发到另一个URL。

在我的根文件夹中,我有以下代码:

mylist = [[1, 2], [3, 4], [5, 6]]
a, b = foo(mylist)
# a = (1, 3, 5)
# b = (2, 4, 6)

它应该重定向流量,除了网站上的一个目录> /店

在/ shop目录中,还有一个.htaccess文件,它似乎取消了我在root中设置的内容。以下是/ shop目录中.htaccess的内容:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domaina.com
RewriteRule ^(.*) http://www.domainb.com/$1 [R=301,L] 

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

  

它似乎取消了我在根目录中设置的内容“

这就是.htaccess文件的工作方式。来自the docs

  

应用.htaccess文件中的配置指令   找到.htaccess文件的目录,以及所有目录   子目录。但是,重要的是要记住这一点   目录中可能存在.htaccess文件。   指令按照找到的顺序应用。因此,一个   特定目录中的.htaccess文件可能会覆盖找到的指令   在.htaccess文件中找到更高的目录树。以及那些,   反过来,可能已经被覆盖的指令发现更高,或者在   主服务器配置文件本身。

答案 1 :(得分:0)

shop/.htaccess内,您可以在顶部使用此指令:

RewriteOptions InheritBefore

这会强制当前配置继承父配置,并在当前.htaccess规则之前应用父规则。

如果您使用的是较旧的Apache,那么< 2.4然后使用:

RewriteOptions Inherit

但请记住,在当前设置之后将应用父配置。

Check official doc for more details