1. 首页
  2. 经验技巧
  3. linux+apache环境下通过修改.htaccess实现网站内页301重定向详解

linux+apache环境下通过修改.htaccess实现网站内页301重定向详解

网站出现死链是很难避免的事情,例如对栏目页或文章页路径进行了调整,如果想保留之前的链接就要做301跳转。但是很多朋友都只知道做网站首页301重定向,对网站内页301重定向知之甚少,下面内容将会详细介绍如何通过修改.htaccess文件来实现网站内页301重定向。

首先我们来了解几个简单符号所代表的含义:

1、(.*) 代表任意字符(包括汉字、英文字母等)

2、(\d+)代表是任意数字(仅仅是阿拉伯数字)

3、$1、 $2 、$3 、$4表示的是对前面出现的变量的引用(你理解这个意思就行了)

了解完之后我们进入正题

第一种、简单的数字形式链接做301跳转

例如:

    把网址①http://www.linshuhaos.com/2017/11/27/seo/  重定向为网址②http://www.linshuhaos.com/seo.html,该怎么写

说明:

    网址①可写在这种形式 http://www.linshuhaos.com/%year%/%monthnum%/%day%/%postname%/

    网址②可写成这种形式 http://www.linshuhaos.com/%postname%.html

    其中/%year%/%monthnum%/%day%就是网址①中的三层路径,分别表示的是“年、月、日”3,%postname%是网址②中的一层路径。现在我们需要去掉“年、月、日”这几个多余的层级,直接变成http://www.linshuhaos.com/%postname%.html这种形式。

重定向语句就可以写成:

  1. RedirectMatch 301 ^/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/$ /$4.html  


解释:

    1、RedirectMatch 301 ^可以认为是规则的开始;

    2、中间的三个([0-9]+)分别代表数字“%year%、%monthnum%、%day%”;

   3、 (.*)代表最后文章的名称或者ID即“%postname%”;

    这四个变量可以赋予用$1、 $2 、$3 、$4来代替,而(.*)和$4.html中间的$可以理解为新老网址的连接符号(注意:$ 和/$4.html之间一定要有一个空格)。

通过上面那个重定向语句就可把复杂的网址①变成简单的网址②,其对应关系 可以用下图来解释更直接明了

301重定向规则.jpg

第二种、字符形式类链接做301跳转

例如:

    把网址③http://www.linshuhaos.com/123 重定向为网址④http://www.linshuhaos.com/seo/123.html,该怎么这写

说明:

   网址③可以写成这种形式 http://www.linshuhaos.com/%id%

    网址④可以写成这种形式http://www.linshuhaos.com/%postname%/%id%.html

重定向语句可以写成:

RedirectMatch 301 ^/(\d+)$ /(.*)/$1.html  

解释:

    1、前面我们说过(\d+)代表是任意数字,所以前面的数字变量“%id%”可以写成(\d+);

    2、“%postname%”是名称,是字符串,而任意字符(包括汉字、英文字母等)对应的表示符号是(.*);

    其中数字变量“%id%”即(\d+)可用$1来代替,所以我们想把网址③变成网址④的形式,只需要在网址③中的“%id%”加多一层路径 即可,而“%id%”可以$1来表示,所以就写成/(.*)/$1.html

20160117182213.jpg

后面三种重定向语句跟前面两种做法,就不一一介绍,自己按照前面的说法好好研究下,应该很好理解。


三、

    http://www.linshuhaos.com/postname/lizi/ 重定向为 http://www.linshuhaos.com/postname/lizi.html

重定向语句:

RedirectMatch 301 ^/(.*)/(.*)/$ /$1/$2.html  


四、http://www.linshuhaos.com/lizi/ 重定向为  http://www.linshuhaos.com/archives/lizi.html

重定向语句:

RedirectMatch 301 ^/(.*)/$ /archives/$1.html  


五、http://www.linshuhaos.com/lizi 重定向为 http://www.linshuhaos.com/lizi.html

重定向语句:

RedirectMatch 301 ^/(.*)$ /$1.html  


怎么才能快速准确地写好你的重定向语句?

    1、首先你要弄清楚自己原网址中需要改变的部分是什么形式,是数字还是字母,该 用正规表达式中的哪些符号来代替;

    2、弄清重定向前的网址有多少层路径,重定向后网址有多少路径;

    3、重定向语句

RedirectMatch 301 ^/(.*)$ /$1.html  ,中蓝色的部分一定得有一个空格,符号$是用来链接新旧网址的

    4、上面的代码在.htaccess文件中,也可以放在这个代码<IfModule mod_rewrite.c>.....</IfModule>之外,比如这样:

RedirectMatch 301 ^/(\d+)$ /$1.html  
# BEGIN WordPress  
<IfModule mod_rewrite.c>  
RewriteEngine On  
RewriteBase /  
RewriteRule ^index\.php$ - [L]  
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d  
RewriteRule . /index.php [L]  
</IfModule>
相关推荐