發表日期:2021-07-23 文章編輯: 瀏覽次數:1872 標簽:
網站死鏈有時候是不可避免的,網站欄目頁或者文章內頁因為某些原因調整了路徑,如果想保留之前的鏈接就需要做301跳轉。網站首頁的301重定向容易做,不過內頁的301就相對復雜一些,通過修改.htaccess文件可以輕松完成這項工作。
通過修改.htaccess實現網站內頁301重定向跳轉 htaccess文件是Apache服務器中的一個配置文件,它負責相關目錄下的網頁配置。通過htaccess文件,可以幫我們實現:網頁301重定向、自定義404錯誤頁面、改變文件擴展名、允許/阻止特定的用戶或者目錄的訪問、禁止目錄列表、配置默認文檔等功能。在LINUX主機FTP文件中都會有一個.htaccess配置文件用來設置偽靜態規則,本文主要介紹如何通過正則表達式實現批量內頁跳轉。
在寫之前我們先來認識幾個簡單的符號所代表的含義
1、(.+) 代表任意字符(包括漢字、英文字母等)
2、(d+)代表是任意數字(僅僅是阿拉伯數字)
3、$1、 $2 、$3 、$4表示的是對前面出現的變量的引用(你理解這個意思就行了)
一、簡單的數字形式鏈接跳轉
例如:
http://www.wkl8.cn/2016/12/24/seo/ 重定向 為 http://www.wkl8.cn/seo.html
說明:
http://www.wkl8.cn/%year%/%monthnum%/%day%/%postname%/
http://www.wkl8.cn/%postname%.html
/%year%/%monthnum%/%day%這個路徑表示的意思是“年、月、日”3層路徑,%postname%是名稱?,F在需要去掉“年、月、日”這幾個多余的層級,變成http://www.wkl8.cn/%postname%.html這種形式。
重定向語句:
RedirectMatch 301 ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/$ /$4.html
解釋:
RedirectMatch 301 ^可以認為是規則的開始;
中間的三個([0-9]+)分別代表數字“%year%、%monthnum%、%day%”;
(.*)代表最后文章的名稱或者ID即“%postname%”;
這四個變量可以賦予編號$1、 $2 、$3 、$4,(.*)和$4.html中間的$可以理解為新老網址的連接符號(注意:$ /$4.html這個符號$和后面的/之間有空格)。
我們要做的就是前面的日期都不要,只留最后的文章名,然后在結尾后面加上.html,所以修改后前面的三個([0-9]+)都不要,只保留最后的(.*),通過下圖我們知道(.*)代表$4,所以后面的規則只需寫上$4.html就行了。
通過修改.htaccess實現網站內頁301重定向跳轉
二、字符形式類鏈接跳轉
1、例如:http://www.wkl8.cn/123 重定向為 http://www.wkl8.cn/seo/123.html
說明:
http://www.wkl8.cn/%id%
http://www.wkl8.cn/%postname%/%id%.html
重定向語句:
RedirectMatch 301 ^/(d+)$ /(.*)/$1.html
解釋:
前面我們說過(d+)代表是任意數字,所以前面的數字變量“%id%”可以寫成(d+);
“%postname%”是名稱肯定是字符,而任意字符(包括漢字、英文字母等)對應的表示符號是(.*);
其中數字變量“%id%”即(d+)對應的編號是$1,我們需要做的是在舊的文章鏈接的數字ID前面加一個分類名稱,所以前面變量的表示方式為/(d+),后面的可以寫成/(.*)/$1.html,再在它們之間加一個鏈接符號$就行了。
2、 http://www.wkl8.cn/postname/lizi/ 重定向為 http://www.wkl8.cn/postname/lizi.html
重定向語句:
RedirectMatch 301 ^/(.*)/(.*)/$ /$1/$2.html
3、http://www.wkl8.cn/lizi/ 重定向為 http://www.wkl8.cn/archives/lizi.html
重定向語句:
RedirectMatch 301 ^/(.*)/$ /archives/$1.html
4、http://www.wkl8.cn/lizi 重定向為 http://www.wkl8.cn/lizi.html
重定向語句:
RedirectMatch 301 ^/(.*)$ /$1.html
寫重定向語句時應該注意哪些方面:
首先你要弄清楚自己原網址中需要改變的部分是什么形式,是數字還是字母,然后在重定向語句前面的部分用正則表達式對應的符號來表示,(.+) 代表任意字符(包括漢字、英文字母等),(d+)代表是任意數字(僅僅是阿拉伯數字),然后在語句后面分別用對應符號$1、 $2 、$3 、$4、$5..表示,最后用鏈接符號$,來鏈接新舊網址。
注意:連接符號$和后面的新網址之間有一個空格,而且,如果原網址最后有/的話,在$之前也必須有一個/。
三、代碼放置位置
上面的代碼可以放在這段代碼.....中間或者之外,比如這樣:
RedirectMatch 301 ^/(d+)$ /$1.html # BEGIN WordPressRewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]