2014-05-19 90 views
1

在我的Ubuntu開發機器上運行LAMP堆棧。對於每一個網站,我的工作,我創建了一個新的目錄關根:.htaccess不同目錄之間的重寫規則衝突

/var/www/somesite.com

/var/www/anothersite.com

我的問題是,阿帕奇不會允許跨這些文件夾重複重寫規則。舉例來說,如果我成立了這一點:

重寫規則^軌道/(.*)$ /somesite.com/order_track.php [NC,L]

http://localhost/somesite.com/track/abc123 - 可以作爲intented

此相同阿帕奇返回404

- 宣言anothersite.com

重寫規則^軌道/(.*)$ /anothersite.com/order_track.php [NC,L]

http://localhost/anothersite.com/track/abc123不會工作

清除瀏覽器緩存並重新啓動Apache不起作用。阿帕奇似乎「記得」第一個像使用的重寫小冊子。這發生在我所有的電腦(家庭,工作,筆記本電腦)

編輯:我應該提到,我在每個目錄中有一個htaccess文件。根/ var/www不包含htaccess文件。每個目錄的htaccess應該獨立運行。但他們沒有。在/anothersite.com/.htaccess

RewriteEngine On 
RewriteBase /somesite.com/ 

RewriteRule ^track/(.*)$ order_track.php [NC,L] 

那麼這個:

回答

0

可以在/somesite.com/.htaccess有這個

RewriteEngine On 
RewriteBase /anothersite.com/ 

RewriteRule ^track/(.*)$ order_track.php [NC,L] 
+0

雖然它工作,這感覺就像一個解決方法。我寧願知道Apache爲什麼會這樣。感謝您的輸入! –

+0

我可以知道你爲什麼認爲這是一種解決方法嗎? – anubhava

+0

我說這是一種解決方法,因爲從我讀過的內容來看,Apache不應該以這種方式行事。子文件夾中的每個htaccess文件應獨立運行。我找不到解決問題的其他方法,因此我正在使用您提供的解決方案。 –

0
RewriteCond %{HTTP_HOST} ^(?:www\.)?(somesite\.com|anothersite\.com)$ 
RewriteRule ^track/ /%1/order_track.php [NC,L] 

你並不需要,如果沒有必要趕這個(*)。