htaccess重写被覆盖

时间:2014-02-06 17:11:12

标签: .htaccess

我在我网站的根目录中有以下htaccess文件来重定向目录' MyDirectory'到另一个网址(停止谷歌索引两个网站)

RewriteCond %{HTTP_HOST} ^myurl\.co\.uk$ [OR]
RewriteCond %{HTTP_HOST} ^www\.myurl\.co\.uk$
RewriteRule ^mydirectory\/(.*)$$ "http\:\/\/www\.redirectURL\.com/" [R=301,NC]

然后我在“我的目录”中有另一个htaccess文件。上面的目录以用户友好的方式处理URL和查询字符串:

RewriteRule ^Answers/(.+)$ Answers.php?articleName=$1 [QSA]

但是,当我在其他htaccess中有 ReWriteRule ^ Answers ... 部分时,它会停止我网站根目录中的重定向工作。

任何有关为什么^ Answers / ...重写覆盖我的重定向到www.redirectURL.com的建议。

由于

1 个答案:

答案 0 :(得分:0)

.htaccess是每个目录指令,对于任何URI路径,首先处理当前目录的.htaccess。如果没有找到.htaccess,那么它会从目录树开始向上一级,直到找到一个。它最终会处理DocumentRoot/.htaccess

在您的情况下,因为您有一个/MyDirectory/.htaccess,因此所有指令都只从该文件中读取,因此会覆盖DocumentRoot/.htaccess的所有规则。

但是,您可以在RewriteEngine On

中的/MyDirectory/.htaccess之后添加此行
RewriteOptions inherit

这将在完成当前的.htaccess后处理父.htaccess。