一个htaccess覆盖另一个

时间:2014-01-27 11:50:58

标签: .htaccess

如果之前已经回答过,请道歉。我到处搜索,我找不到合适的解决方案。

我正在使用opencart重写模块来获得更好的网址:

RewriteBase /

RewriteRule sitemap.xml /index.php?route=feed/google_sitemap

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) /index.php?_route_=$1 [L,QSA]

我还有一个我想要访问的目录(电子邮件)作为标准。我知道上面的2条RewriteCond行将允许任何目录和/电子邮件工作正常。

这是UNTIL我用密码保护cPanel中的emailer文件夹,然后在emailer文件夹中创建以下.htaccess:

AuthType Basic
AuthName "emailer"
AuthUserFile "/home/mywebsit/.htpasswds/public_html/emailer/passwd"
require valid-user

然后我突然得到页面未找到错误。如果我删除这个新的.htaccess它工作正常。我试过添加一行

RewriteEngine off

进入它,但它仍然不想知道。

我做错了什么?我之前已经解决了这个问题,最后删除了原来的.htaccess文件,因为我浪费了太多时间试图让它工作。

2 个答案:

答案 0 :(得分:0)

您可以尝试在电子邮件文件夹中启用上的重写引擎。打开它将使电子邮件htaccess中的任何规则优先于父文件夹中的规则。由于电子邮件htaccess文件中没有规则,因此不会应用任何规则:

RewriteEngine On

然后没有其他重写规则。

答案 1 :(得分:0)

在DocumentRoot / .htaccess中尝试此代码:

RewriteEngine On
RewriteBase /

RewriteRule ^sitemap\.xml /index.php?route=feed/google_sitemap [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !/emailer/ [NC]
RewriteRule ^(.+)$ /index.php?_route_=$1 [L,QSA]