2013-12-11 37 views
1

我所有的網站頁面URL都被重定向到開頭有www。所以,如果有人輸入http // xyz.com,它會自動將其設爲http // www.xyz.com。這對我來說很好。但主要問題是,如果有人輸入123.234.111.121,它會在開始時再次輸入www,這是錯誤的。我如何解決它?任何在這方面的幫助,高度讚賞。htaccess除了IP以外,全部重定向到www

我目前的設置如下

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

我即使有這樣的嘗試......

RewriteEngine On 
RewriteBase/
RewriteCond %{REMOTE_HOST} !^50\.56\.246\.162 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

但是,它仍然無法正常工作

回答

0

您可以使用此規則:

RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} !^[0-9]+\. 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

This co如果您提供IP地址訪問該網站,則步驟RewriteCond %{HTTP_HOST} !^[0-9]+\.將跳過此規則。

+0

嗨! Anubhava。感謝你的及時回覆。但它不能按預期工作。請參閱此50.56.246.162/svn/7sis_repo再次看起來在www之前添加了一個www – Jay

+0

這應該不會發生。在新的瀏覽器中試試這個以避免301緩存問題。 – anubhava

+0

你的邏輯似乎是正確的,但我嘗試在新的瀏覽器。爲了您的滿意,我清除了所有緩存。仍然發生這種情況:( – Jay

0

anubhava建議的上述規則也不適用於我。我谷歌周圍,並與這個答案。

RewriteCond %{HTTP_HOST} . 
    RewriteCond %{HTTP_HOST} !^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ 
    RewriteCond %{HTTP_HOST} !^www\. [NC] 
    RewriteRule^http%{ENV:protossl}://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]