2016-08-02 13 views
2

我想將我的網站廣告爲mydomain.com。對我來說,它看起來比www.mydomain.com好。修改這個www.部分是否有重定向的習慣?有人會去www.mydomain.com/books,我會將他重定向到mydomain.com/books。這個想法背後有沒有潛在的陷阱?重定向跳過www是否常見?

另一個原因是使第三方回調URL簡單。現在,我需要聲明mydomain.com/oauth/googlewww.mydomain.com/oauth/google作爲我的重定向網址,因爲Google認爲它們不同。這不是一筆鉅額交易,但需要額外考慮。

如果修剪www.是安全的,那該如何實現?我在Apache上使用PHP。我目前的.htaccess看起來是這樣的:

<IfModule mod_rewrite.c> 
    <IfModule mod_negotiation.c> 
     Options -MultiViews 
    </IfModule> 

    RewriteEngine On 

    # Redirect Trailing Slashes If Not A Folder... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)/$ /$1 [L,R=301] 

    # Handle Front Controller... 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 
+0

使用Apache(無論是vHost配置還是.htaccess)。 –

+0

'是否通常的做法是重定向跳過www?'[這可能會回答你的問題](http://www.yes-www.org/why-use-www)我注意到所有的大網站,當他們使用www開始大開局。一開始,Instagram並沒有獨佔。也許也是因爲Facebook。但是Snapchat和許多其他大型網站也是如此。我最近也開始執行www。 –

回答

4

您應該使用www?

您應該在www.example.com或example.com上進行標準化,您選擇的標準主要取決於您的偏好。對於哪一個是正確的或應該使用哪些有不同的意見。

no-www.org提倡使用www子域是多餘的,因爲使用http協議意味着網絡。

默認情況下,所有流行的Web瀏覽器都採用HTTP協議。這樣做時,軟件會在所請求的URL前面加上'http://',並自動連接到端口80上的HTTP服務器。爲什麼許多服務器要求他們的網站通過www子域進行通信?郵件服務器不要求您將電子郵件發送到[email protected]。同樣,Web服務器應允許通過主域訪問其頁面,除非需要特定的子域。

yes-www.org另一方面主張使用www子域名,因爲它允許您的網站更靈活。通過使用www子域,您可以在dns記錄中使用CNAME來更輕鬆地使用CDN /雲託管等內容。

當使用提供商,如Heroku的或Akamai的託管您的網站,供應商希望能夠以更新的情況下,它需要從故障的服務器將流量重定向到一個健康的服務器的DNS記錄。這是使用DNS CNAME記錄設置的,裸域不能有CNAME記錄。

當您將靜態資產託管在另一個域上時,它還可以幫助防止不必要的cookie流量。

一個常見的網站優化是提供來自子域的靜態內容,如static.example.com。如果您使用的是www,那麼這是沒有問題的;你的網站的cookies不會被髮送到靜態子域(除非你明確地設置它們)。

一旦你決定

你想重定向所有流量到過的版本,你最終使用。

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

如果能夠編輯主要的Apache配置,另一種選擇是設置兩個虛擬主機,其中一個只是重定向到其他:與Apache這可以使用mod_rewrite如在其他的答案來完成。我爲我的網站做了這件事,它運作良好。

<VirtualHost *:80> 
    ServerName example.com 

    Redirect permanent/http://www.example.com/ 
</VirtualHost> 
<VirtualHost *:80> 
    ServerName www.example.com 
    DocumentRoot /var/www 
    #The rest of your configuration 
</VirtualHost> 
+0

我更喜歡使用.htaccess來保持項目明智。我更新了我的問題並粘貼了當前的.htaccess。你能否看看我的文件中是否可以使用此規則以及其他一些規則?如果有斜線,我已經重定向了,所以也許我可以在一個規則中包含這兩個條件? –

0

你這樣做有.htaccess文件

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

如果你可以使用的.htaccess你可以在一個簡單的方法重定向:

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

這是我從SEO角度回答的問題。

由於SEO MOZ表明他們真棒Beginner's Guide to SEO

通常情況下,完全相同的內容的兩個或多個副本出現在 您在不同網址的網站。例如,下面的 網址都可以指單一網頁:

給搜索引擎,這些出現作爲五個單獨的頁面。由於 內容在每個頁面上都是相同的,因此可能會導致搜索引擎貶低內容及其潛在的排名。

從這裏我們可以得出結論:如果您設置頁面的有或無www.無關緊要。但將HTTP代碼301重定向到一個「統一」域是個好主意。 Apache 2支持.htaccess設置用於此目的:

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

謝謝你洞察力的SEO視角:)你能看看我更新的問題嗎?我包含了我目前的.htaccess。也許這個規則可以簡化爲與我的尾部斜槓規則一起工作? –

+0

你不必重定向尾部的斜線,如果你用apache中的mod_rewrite重寫它們也沒關係。這裏有一個關於如何在SO上進行搜索的答案 - 搜索它或者打開一個新問題(而是搜索它:)) –

+0

實際上,這些尾部斜線實際上由Laravel框架修剪。它在這個框架中是默認的.htaccess。 –