2012-05-26 81 views
0

我有一個Apache2的虛擬主機指向多個域名:別名和的RewriteRules共同努力

ServerName domain1.com 
ServerAlias domain2.com 
ServerAlias domain3.com 

始終顯示相同的URL我使用這樣的重寫規則:

RewriteCond %{HTTP_HOST} !^domain1.com [NC] 
RewriteRule (.*) http://domain1.com/$1 [R=301,QSA,L] 

最後我有一個別名是這樣的:

Alias /niceurl /long/path/to/index.php 

一切正常,除了當用戶訪問domain2.com/niceurl/foo,在瀏覽器中顯示的URL將被domain1.com/path/to/index.php/foo,而不是domain1.com/niceurl/foo

我要補充的是,其它情況下工作像預期的,換句話說:

domain2.com/foo => domain1.com/foo 
domain1.com/shorturl/bar => domain1.com/shorturl/bar 

有一個聰明的方式來實現我想?感謝任何提示!

+0

好像這個問題實際上與此http: //serverfault.com/questions/212071/serveralias-not-working – leo

回答

0

的解決方案是創建一個符號鏈接,如果你有你的文檔根目錄的訪問:

ln -s /<path to application> /<document root>/foo 
1

你真的需要一個域重定向的查詢字符串追加(QSA)嗎?

試試你的規則,沒有它:

RewriteRule (.*) http://domain1.com/$1 [R=301] 
+0

你對QSA是正確的,但是這並不能解決問題。域重定向工作正常,但「niceurl」部分不保留。 (我想讓完整的網址工作的原因是域名是一個國際化域名,許多人仍然習慣於用域名中的o,o等代替域名,因此會有像這樣的鏈接指向網站) – leo

相關問題