2010-01-12 76 views
0

我試圖找到下列情況下,正確的mod_rewrite代碼:mod_rewrite的域根

domain.de => www.domain.com/de/ 
domain.de/... => www.domain.com/... 
www.domain.de => www.domain.com/de/ 
www.domain.de/... => www.domain.com/... 

domain.com => www.domain.com/en/ 
domain.com/... => www.domain.com/... 
www.domain.com => www.domain.com/en/ 
www.domain.com/... => www.domain.com/... 

所以基本上

  1. 所有非www域名應該重定向到www。
  2. 所有以.de或.de /結尾的URI都應該重定向到www.domain。 COM /德/
  3. ,但如果有人在後由Matchi.com提供回到輸入了一些/應該被簡單地附加到www.domain.com/...

誰能想到這個聰明的解決方案?我一直在努力與{REQUEST_URI}和{} REQUEST_FILENAME試圖找出如果請求的URI上.de或結束由Matchi.com提供回到/,但無法找到一個有效的解決方案......

回答

1

嘗試這種情況:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.de$ 
RewriteRule ^$ http://www.example.com/de/ [L,R=301] 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.de$ 
RewriteRule . http://www.example.com%{REQUEST_URI} [L,R=301] 
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ 
RewriteRule ^$ http://www.example.com/en/ [L,R=301] 
RewriteCond %{HTTP_HOST} ^example\.com$ 
RewriteRule . http://www.example.com%{REQUEST_URI} [L,R=301] 
+0

喜秋葵,謝謝!這正是我所期待的。你能告訴我^ $和之間的區別嗎?在重寫過程中是? – Frank 2010-01-13 09:44:23

+0

'^ $'只匹配URL路徑'/',而'.'匹配其他任何內容('/'加上更多)。這是因爲在.htaccess文件中使用mod_rewrite時,每個目錄路徑前綴在測試之前被刪除,並在應用規則之後被附加。並且根目錄的路徑前綴是'/'。 – Gumbo 2010-01-13 09:52:30