米粒在線分享下關于:多域名301跳轉到主域名Rewrite設置和域名301跳轉的實現方法
如果網站有多個域名,而又不希望分散權重,則可以通過開啟Rewrite設置,將多個域名都301跳轉到主域名之下,具體代碼如下:
RewriteEngine On RewriteCond %{HTTP_HOST} ^miliol.com [NC,OR] RewriteCond %{HTTP_HOST} ^www.mililo.com [NC,OR] RewriteCond %{HTTP_HOST} ^miliol.org [NC] RewriteRule ^(.*)$ http://www.bjmhhq.com/$1 [L,R=301]
其中www.bjmhhq.com為最終希望出現的域名,而miliol.com、www.miliol.com和miliol.org都為希望被301跳轉的域名。(子域名在計算權重的時候也被認為是獨立的新域名,所以此方法也可用于不帶www的域名和帶www的域名之間的跳轉)其中OR的含義為“或”,可以通過OR繼續添加更多的域名。
配置代碼可寫在httpd.conf中,也可以寫在.htaccess文件中,如果是wordpress用戶,在修改.htaccess文件時候,記得將配置代碼寫在# BEGIN WordPress和# END WordPress之外,否則會被wordpress設置時給覆蓋。
域名301跳轉的實現方法
所謂301永久重定向(或叫301轉向,301跳轉),是指當用戶或搜索引擎向網站服務器發出瀏覽請求時,服務器返回的HTTP數據流中頭信息(header)中的狀態碼的一種,表示本網頁永久性轉移到另一個地址。
301永久重定向有何作用?在哪些情況下適用?
從301永久重定向的定義可以看出,它是一種狀態碼,會向搜索引擎或瀏覽器發出信息:本網頁的地址已經永久改變了。并會把新的地址傳達過去。而相應的就是:我們輸入網址A訪問,顯示出來的是轉向后的網址B,轉向過程極短以至無法察覺。所以,301永久重定向對于訪客來說,作用就是將他要訪問的而實際上已不存在的網址轉到另一個網址,避免出現“此網頁無法顯示”之類的錯誤;對于搜索引擎優化|SEO來說,給搜索引擎一個友好的信息,告訴它此頁面已永久重定向,避免搜索引擎找不到頁面。這對于網站的SEO是很重要的,因為301永久重定向對SEO無任何不好的影響!而且網頁A的關鍵詞排名和PR級別都會傳達給網頁B!
一、當出于需要刪除網站中的某些目錄時,可以通過301永久重定向將此目錄重定向到網站首頁。
二、網站更換域名時,通過301永久重定向將舊域名重定向至新域名,挽回流量損失和SEO。
三、想要多個域名同時指向同一網站時,通過301永久重定向可以實現。一般的虛擬主機后臺提供將miliol.com和www.miliol.com等多個域名綁定到同一網站的功能,但這樣對收錄可能有影響,而用301永久重定向就沒有這樣的擔憂。
四、實現網址規范化。
經常會碰到這樣的情況,其他網站鏈接你的站點時,會用下面的鏈接:
http://www.miliol.com
http://miliol.com
http://www.miliol.com/index.html
http://miliol.com/index.html
而這樣導致:你站點主域名的PR值分散到其他幾個URLs了。
如果你用301重定向把其他三個URL轉到www.miliol.com
PR也就集中在主域名:www.miliol.com 了。
如何實現301永久重定向?
實現的方法主要描述兩種,一種是通過容器的配置修改實現,另外一種是程序語言實現
一、容器的配置修改方法:
1)IIS容器實現301轉向:
1.internet信息服務管理器中,在想要重定向的網頁或目錄上點擊鼠標右鍵
2.選擇-重定向到URL
3.輸入目標頁面的地址
4.選中-資源的永久重定向
5.應用并確定
2)Apache容器下修改方法:
1、修改.htaccess文件,輸入下列內容(需要開啟mod_rewrite):
①將不帶WWW的域名轉向到帶WWW的域名下:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^miliol.org [NC]
RewriteRule ^(.*)$ http://www.bjmhhq.com/$1 [L,R=301]
②重定向到新域名:
RewriteEngine on
RewriteRule ^(.*)$ http://www.bjmhhq.com/$1 [L,R=301]
2、Apache下vhosts.conf中配置301轉向:
1 2 3 4 5 6 7 | <VirtualHost *:80> ServerName www.bjmhhq.com DocumentRoot /home/ </VirtualHost><VirtualHost *:80> ServerName miliol.org RedirectMatch permanent ^/(.*) http://www.bjmhhq.com/$1 </VirtualHost> |
3)Ruby容器中實現301轉向:
1 2 3 4 | def old_action headers["Status"] = "301 Moved Permanently" redirect_to "http://www.bjmhhq.com" end |
4)Coldfusion容器中實現301轉向:
1 2 | <.cfheader statuscode="301" statustext="Moved permanently"> <.cfheader name="Location" value="http://www.bjmhhq.com"> |
二、程序語言跳轉方法:
1、ASP的301跳轉代碼:
1 2 3 4 5 | <%@ Language="VBScript" %> <% Response.Status = "301 Moved Permanently" Response.AddHeader "Location", "http://www.bjmhhq.com" %> |
2、PHP的301跳轉代碼:
1 2 3 4 5 | <? header("HTTP/1.1 301 Moved Permanently"); header("Location:http://www.bjmhhq.com"); exit(); ?> |
3、ASP.Net的301跳轉代碼:
1 2 3 4 5 6 7 | <script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.Status = "301 Moved Permanently"; Response.AddHeader("Location","http://www.bjmhhq.com"); } </script> |
4、CGI Perl的301跳轉代碼:
1 2 | $q = new CGI; print $q->redirect("http://www.bjmhhq.com "); |
5、JSP的301跳轉代碼:
1 2 3 4 5 | <% response.setStatus(301); response.setHeader( "Location", "http://www.bjmhhq.com " ); response.setHeader( "Connection", "close" ); %> |
1F
在Linux主機下的,多域名301跳轉設置,常規的寫法,大家應該都會的:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^qiuyongsheng.com [NC]
RewriteRule ^(.*)$ http://www.qiuyongsheng.com/$1 [L,R=301]
但是要用的是多個域名301跳轉,主機綁定了好幾個域名,尋找的是這些域名同時都陸續跳轉之的方法,寫法:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^b.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.b.com [NC,OR]
RewriteCond %{HTTP_HOST} ^c.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.c.com [NC,OR]
RewriteCond %{HTTP_HOST} ^miliol.com [NC]
RewriteRule ^(.*)$ http://www.miliol.com/$1 [L,R=301]
就是多個域名,可以在NC后面加個OR設置,直到最后一個,中括號中相關字母代表的意思是:
1) R[=code](force redirect) 表示強制外部重定向,
強制在替代字符串加上http://thishost[:thisport]/前綴
重定向到外部的URL.如果code不指定,將用缺省的302 HTTP狀態碼。
2) L(last rule) 表明當前規則是最后一條規則,停止分析以后規則的重寫。
3) NC(no case) 不區分大小寫
采用重寫語句RewriteRule ^(.*)$ http://www.miliol.com/$1 [L,R=301]后,
某個url例如miliol.com/news/1.html會被跳轉成www.miliol.com//news/1.html,
多了一個斜杠,故經過優化后,采用重寫語句
RewriteRule ^(.*)$ http://www.miliol.com$1 [L,R=301]
比較好,就不會多出那個斜杠來了。