2014-01-27 54 views
0

如果之前已经回答过,请道歉。我到处搜索,我找不到合适的解决方案。一个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行将允许任何目录和/电子邮件工作正常。

也就是说,直到我的密码保护中的cPanel邮件器文件夹,然后它在邮件器文件夹中创建下面的.htaccess:

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

这时我突然收到未找到错误页面。如果我删除这个新的.htaccess它工作正常。我已经尝试添加该行

RewriteEngine off 

进去但它仍然不想知道。

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

+0

检查你的Apache error.log中,看看你得到任何的错误。 – anubhava

+0

除了无法找到401找不到的页面之外,错误日志中没有任何内容。 – jimbeeer

+0

是401还是404? – anubhava

回答

0

您可以尝试在emailer文件夹中打开的重写引擎。打开它将使电子邮件程序htaccess中的任何规则优先于父文件夹中的规则。由于在邮件器htaccess文件没有规则,没有规则将得到应用:

RewriteEngine On 

则没有其他重写规则。

+0

这似乎没有任何效果。 – jimbeeer

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] 
+0

完成它,理论上它应该工作。但事实并非如此。它似乎是与/emailer/.htaccess冲突的实际RewriteRule行。正如我在上面的评论中所说的,如果我评论规则,/电子邮件工程师完美地工作,但它不会调整网址。 – jimbeeer

+0

什么是您的'/ home/mywebsit/.htpasswds/public_html/emailer/passwd'文件的当前权限? – anubhava

+0

该文件的权限是0644 – jimbeeer