我使用以下嘗試從URL中移除WWW:如何始終使用mod_rewrite從網址中刪除WWW?
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://example.com$1 [R=301]
但由於某種原因,這是行不通的。有什麼建議麼?
我使用以下嘗試從URL中移除WWW:如何始終使用mod_rewrite從網址中刪除WWW?
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule (.*) http://example.com$1 [R=301]
但由於某種原因,這是行不通的。有什麼建議麼?
嘗試:
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
而且沒有mod_rewrite
:
<VirtualHost 10.0.0.1:80>
ServerName www.example.com
Redirect permanent/http://example.com/
</VirtualHost>
虛擬主機可以用來通過完成以下網址中的步驟:Setting Up A Virtual Host in Apache。
這裏是一個更廣義的解決方案:
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule^http://%1%{REQUEST_URI} [L,R=301]
有沒有辦法檢測和重寫用戶來自的同一個URL方案(http或https)? 'http:// www.example.com /'爲'http:// example.com /'和'https:// www.example.com /'爲'https:// example.com'。 – 2012-09-11 23:52:15
REQUEST_URI是否包含index.php?出於某種原因,當我訪問www.example.com時,它會重定向到www.example.com/index.php – CMCDragonkai 2013-12-03 08:12:56
@CMCDragonkai如果您想追加原始查詢字符串,請不要忘記QSA標誌。 – jordanbtucker 2015-02-06 18:33:18
凱爾的回答的一個小調整,我把一/在重寫規則匹配條件,像
RewriteCond %{HTTP_HOST} ^www\.example\.com$
RewriteRule ^/(.*)$ http://example.com/$1 [R=301,L]
否則,你會得到一個雙斜槓結果。
http://www.example.com/smth -> http://example.com//smth
。 – NilsB 2015-08-07 13:07:42
我總是先使用307(臨時重定向),因爲如果你弄錯了,一些瀏覽器會永久地緩存它。我最終安裝了谷歌瀏覽器,僅僅是因爲即使我刪除了整個緩存,我也無法讓我的Firefox忘記重定向。
這是一個解決方案,如果你不想要一個硬編碼的域名。不要忘記啓動重寫引擎,否則這將不起作用!
# Start rewrite engine
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
</IfModule>
# Rewrite "www.example.com -> example.com"
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule^http://%1%{REQUEST_URI} [R=301,L]
</IfModule>
事情是這樣的:在http://www.example.com/的網頁生成了過多的重定向。清除您的本網站的Cookie或允許第三方Cookie可以解決此問題。如果沒有,這可能是一個服務器配置問題,而不是您的計算機的問題。 *我刪除了這些,但網站仍然停機!爲什麼這樣?* – Yeti 2010-03-02 07:38:58
問題1.你是否同時使用兩者?問題2.您是否將IP地址更改爲正確的值?問題3.你是否擁有example.com? – 2010-03-02 07:40:07
虛擬主機方法的+1。直到你真的需要的時候才使用mod_rewrite。 – bobince 2010-03-02 07:40:10