2011-02-18 68 views
0

我希望我的網站始終能夠重定向到默認語言,如果用戶尚未請求 - 即默認語言是英語,我想將用戶重定向到http://domain.com/english/當他/她進入http://domain.com/301將www和non-www重定向到虛假目錄

同時,我想從URL中刪除的「www」的一部分,以及通過http://domain.com/index.php重定向所有流量。

我有以下.htaccess文件,當用戶輸入www.domain.com這是偉大的工作,而不是當用戶輸入domain.com(不包含「www」)。我究竟做錯了什麼?

# 
# Remove WWW from URL 
# 

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L] 

# 
# Redirect all traffic through index.php 
# 

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?$1 [L,QSA] 

回答

1

試試這個:

# Remove WWW from URL and redirect to /english/ 
RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR] 
RewriteCond %{REQUEST_URI} ^/$ 
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L] 
0

嘗試

RewriteCond %{HTTP_HOST} ^(www\.)?example.com$ [NC] 

隨着?,使WWW可選的,所以第一條規則捕獲兩者。

編輯:

使用此規則來去除WWW,然後使用index.php頁面上的重定向到/英文/代替URL重寫規則。

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^(www\.)example.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L] 
+0

我得到一個 「的網頁沒有正確重定向」 從Firefox:/ – josocblaugrana 2011-02-18 22:31:52

+0

@josocblaugrana:確實是這樣。我的規則會使它不斷重定向,現在我想到了它。 – mellamokb 2011-02-18 22:35:47

+0

我該如何重定向index.php以友好的搜索引擎優化方式? – josocblaugrana 2011-02-18 22:44:42

0

我認爲有以下應該工作:

RewriteEngine On 
RewriteCond %{HTTP_HOST} !^example\.com$ [NC] 
RewriteRule ^(.*)$ http://example.com/english/$1 [R=301,L] 

你是說如果主人不完全www.example.com,然後重定向到它。