301跳轉(重定向)全站或指定頁面

發表留言 人氣: 2424°c

網站301跳轉(重定向)是SEO不可缺少的範疇,如果能夠好好的運用,

無論網站更換了域名(網址)或網站搬家了,一般需要做的工作。

例如︰網站整個更換了域名或網站結構或目錄發生了移動,或需要將某個域名上的文件遷移到另外的域上等等。

有時候這種301重定向對SEO或者PR值的傳遞是非常有效的。

301跳轉(重定向)開始︰

首先在網站的目錄建立一份文件名為".htaccess“,打開並編輯。

例子一:如果需要變更域名,即想將舊域名 www.old.com 換成全新的域名 www.new.com 就可以這樣寫

# 將 RewriteEngine 模式打開
RewriteEngine on
# 修改以下語句中的 /tools 為你的網站目錄地址,如果程序放在根目錄中,請將 /tools 修改為 /
RewriteBase /
# Rewrite 301規則
RewriteCond %{HTTP_HOST} ^www.old.com$ [NC]
RewriteRule ^(.*)$ http://www.new.com$1 [L,R=301]

例子二:如果我們想 ifreesite.com 全部跳轉到 www.ifreesite.com 就可以這樣寫 (即以www開頭為主域名)

# 將 RewriteEngine 模式打開
RewriteEngine on
# 修改以下語句中的 /tools 為你的網站目錄地址,如果程序放在根目錄中,請將 /tools 修改為 /
RewriteBase /
# Rewrite 301規則
RewriteCond %{HTTP_HOST} ^ifreesite.com$ [NC]
RewriteRule ^(.*)$ http://www.ifreesite.com$1 [L,R=301]

301跳轉(重定向)代碼之解說︰
RewriteCond %{HTTP_HOST} !^www.ifreesite.com$ [NC]
RewriteRule ^(.*)$ http://www.ifreesite.com/$1 [L,R=301]

以上代碼實現了:只要不是 www.ifreesite.com (第2行中的 www.ifreesite.com )訪問過來的域名,均會跳轉到 www.ifreesite.com (第3行中的 www.ifreesite.com)這個域名
其中第2行中的 !^www.ifreesite.com$ :
! 嘆號表示域名的開始;
^ 尖號表示非,即不是以 xxx 開頭的;
$ 符號表示域名的結尾。
由此可以看出 !^www.ifreesite.com$ 表達的意思就是訪問到你服務器的域名不是完全與 www.ifreesite.com 相同的域名,就會滿足判斷的條件,進而觸發跳轉的操作了。

例子三:指定頁面中的301跳轉(重定向)

1. 內部網站頁面跳轉︰
例如︰將ifreesite.php頁面,跳轉到指定頁面ifreesite.html

# 將 RewriteEngine 模式打開
RewriteEngine on
# 修改以下語句中的 /tools 為你的網站目錄地址,如果程序放在根目錄中,請將 /tools 修改為 /
RewriteBase /
# Rewrite 301規則
RewriteRule ^ifreesite.php(.*)$ /ifreesite.html$1 [R=301,L]

2. 跳轉到其他域名或外部網站︰
例如︰將舊的域名hkfreesite.com/id.htm頁面,跳轉到新的域名指定頁面http://www.ifreesite.com/id.htm

# 將 RewriteEngine 模式打開
RewriteEngine on
# 修改以下語句中的 /tools 為你的網站目錄地址,如果程序放在根目錄中,請將 /tools 修改為 /
RewriteBase /
# Rewrite 301規則
RewriteRule ^id.htm(.*)$ http://www.ifreesite.com/id.htm [R=301,L]
RewriteRule ^data.htm(.*)$ http://www.ifreesite.com/data.htm [R=301,L]
RewriteRule ^phone.htm(.*)$ http://www.ifreesite.com/phone [R=301,L]
RewriteRule ^color.htm(.*)$ http://www.ifreesite.com/color [R=301,L]

例子四:apache設置404頁面 (網站必須已經創建一份404文件)

# 將 RewriteEngine 模式打開
RewriteEngine on
# 修改以下語句中的 /tools 為你的網站目錄地址,如果程序放在根目錄中,請將 /tools 修改為 /
RewriteBase /
# Rewrite 301規則
<Files *>
Options -Indexes
</Files>
ErrorDocument 404 /404/index.html
ErrorDocument 403 /404/index.html

例子五:301重定向正則表達式
全站的網址想通過301重定向到新的網址,不做單一規則全域轉向方法。
例如: 一
訪問(打開): http://www.ifreesite.com/post-id-23.html
轉向(跳轉): http://www.moonlol.com/post-id-23.html
RedirectMatch 301 ^/post-id-(\d+).html$ http://www.moonlol.com/post-id-(\d+).html
或是:將舊有的網址轉到新的網址
RedirectMatch 301 ^/old-id-(\d+).html$ /new-id-$1.html
例如: 二
訪問(打開): http://www.moonlol.com/old/201612/133_6.html
轉向(跳轉): http://www.moonlol.com/new/aid-133.html
RedirectMatch 301 ^/old/(\d+)/(\d+)\_(\d+)\.html$ /new/aid-$2.html
例如: 三
訪問(打開): http://www.moonlol.com/tv/mo-tdm-sat.html
轉向(跳轉): http://www.moonlol.com
RedirectMatch 301 ^/tv(.+).html$ http://www.moonlol.com
例如: 四
訪問(打開): http://www.ifreesite.com/directory/me-258-fbi.html
轉向(跳轉): http://www.moonlol.com/thread-25632.html
RedirectMatch 301 ^/directory/(.+)-(\d+)-(.+).html$ http://www.moonlol.com/thread-$4.html

解釋:
(.+) 對應的是任意字符(包括漢字、英文字母或特殊符號等)

(\d+) 對應的是任意數字(僅僅是阿拉伯數字)

$1 $2 $3 $4 是前面出現過的變量的再次引用(相當於參數)

註意: $和後面的新網址之間有一個空格。而且,如果原網址最後有/的話,在$之前也必須有一個/

說明: 例子一至例子四使用了"mod_rewrite“模組,而例子五使用的是"mod_alias“模塊,兩者功效是一樣的。

.htaccess中用到的正則表達式︰
和通配符類似,正則表達式也是用來進行文本匹配的工具,只不過比起通配符,它能更精確地描述你的需求。

^ –> 匹配字符串的開始
$ –> 匹配字符串的結束
^$ –> 可以用於確定字符串,即可以用於確定起點或終點。例如:^$ —— 空字符串
\s –> 匹配任意的空白符
\w –> 匹配字母或數字或下劃線或漢字
\b –> 是正則表達式規定的一個特殊代碼代表著單詞的開頭或結尾,也就是單詞的分界處
\d –> 匹配一位數字
\W (大寫) –> 匹配任意不是字母,數字,下劃線,漢字的字符
\S (大寫) –> 匹配任意不是空白符的字符
\D (大寫) –> 匹配任意非數字的字符
\B (大寫) –> 匹配不是單詞開頭或結束的位置
“ . ” –> 匹配除了換行符以外的任意字符
“ * ” –> 它代表的不是字符,也不是位置,而是數量——它指定 * 前邊的內容可以連續重覆使用任意次以使整個表達式得到匹配。“ * ”連在一起就意味著任意數量的不包含換行的字符
“ + ” –> 是和“ * ”類似的元字符,不同的是 * 匹配重覆任意次(可能是0次),而 + 則匹配重覆1次或更多次。
“ ? ” –> 重覆零次或一次
“ – ” –> 不是元字符,只匹配它本身,即連字符(減號)

相關文章︰
301重定向在HTML/PHP/ASP文件中跳轉

標籤: