2009-04-28 32 views
13

當Stack Overflow(和其他網站)作爲URL的一部分輸入時,它如何去除'www'前綴?從您的網站中刪除WWW前綴

它是重定向,重寫還是其他東西?

更新:我特別喜歡在IIS 6

+0

真的會幫助你得到一個有用的答案知道你想要了解的服務器。 – 2009-04-28 10:46:01

+0

糟糕,好點,我補充說,謝謝。 – Rob 2009-04-28 10:50:18

+4

重要的是要知道,如果你不使用www(或其他子域名),那麼所有的cookie將被提交給每個子域名,你將無法使用無cookie的子域名來提供靜態內容,從而減少瀏覽器和服務器之間來回傳送的數據量。你後來可能會後悔的事。 http://twitter.com/codinghorror/statuses/1637428313 – 2009-04-28 23:36:32

回答

10

啓動Fiddler,我們可以看到,服務器響應「301 Moved Permanently」狀態並將其指向http://stackoverflow.com。 由於StackOverflow託管在Windows 2k8 IIS7他們在IIS7中立即設置了此重定向。

FYI:

a list of HTTP statuses

如果你是一個.NET開發人員,你可能知道 「Respose.Redirect」,這將創建一個302物件移動狀態。在這種情況下,像301狀態碼這樣的搜索引擎更好,因爲他們知道他們將來不應該回到www.stackoverflow.com。

4

重定向的情況下就知道了。子域「www.stackoverflow.com」將簡單地重定向到「stackoverflow.com」。

+1

如何重定向行動:代碼,DNS或服務器? – Rob 2009-04-28 10:39:01

+0

考慮到我們正在討論這裏,一個運行在IIS上的MVC應用程序,最有可能是一個編程重定向我會說。下一個DNS。 Apache腳本不適用,如果它是你的IIS感興趣。 – 2009-04-28 11:04:32

12

在Apache上,它看起來像這樣(.htaccess文件裏):

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

你可以這樣做多種方式,使用mod_rewrite和重定向是我的最愛。事情是這樣的:

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^www.cuenca.co$ [NC] 
RewriteRule ^(.*)$ http://cuenca.co/$1 [R=301,L] 
12

一個簡單的方法來做到這一點是使用Apache「重定向」指令:

<VirtualHost *:80> 
    ServerName www.example.com 
    Redirect permanent/http://example.com/ 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName example.com 
    # remainder of server configuration goes here 
</VirtualHost> 

重定向指令自動保存在如下的URL /什麼。我發現這個方法比Rewrite方法更容易閱讀和理解。

0

這將會很長的路要走回,但據我所知,這是一個DNS設置。我認爲你不需要指定一個HOST地址(WWW是站點所在的主機(或計算機/集羣...)的名稱)。

我想,那麼你就可以將其設置爲發送到默認主機的所有請求。

不是100%確定,但請查看DNS有什麼可能。

希望能夠幫助或至少讓你朝着正確的方向前進。

1

您需要添加一個指向您的Web服務器的默認dns條目。

平site.com和驗證IP指向Web服務器,如果不是你需要得到默認的DNS條目添加。

的基本設置:

你必須添加主機頭http://www.visualwin.com/host-header/

創建1個網站,與www.site的hostheader。COM

在主目錄選項卡,將其設置爲永久重定向到http://site.com

與site.com

的主機頭創建第二個網站,如果你想www.site.com/file。 html重定向到site.com/file.html,您將需要更高級的設置,如ISAPI_Rewrite或使用自定義404頁來完成。

0

您可以使用mod_rewrite爲Apache做的事情,併爲IIS提供類似的URL重寫器。好的是IIRF。規則是:

RewriteCond %{HTTP_HOST} ^www\.example\.com$  [I] 
RedirectRule ^(.*)$  http://example.com/$1 [R=301] 

您也可以通配符主機名,像這樣:

RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$ [I] 
RedirectRule ^(.*)$  http://example.com/$1 [R=301] 

IIRF是免費使用的。

0

對於Apache

<VirtualHost *:80> 
ServerName yourdomain.tld 
ServerAlias www.yourdomain.tld