2014-01-27 76 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