之前小编写过一个关于htaccess 301重定向配置相关的教程,就是让用户访问http时自动跳转https网址:点击此处查看教程。那么我们该如何使用htaccess中的RewriteRule规则将一个长网址301重定向到短网址呢?
因为有时候我们改变了网站网址显示规则,以前的老网址已经被百度收录了,网站权重没法恢复,于是我们需要使用301重定向来让权重转移到新的网址上,而新网址又比较短,于是我们就需要使用htaccess RewriteRule来解决此类问题。
例如小编要做下面这个案例:
https://www.tpyyes.com/a/kuozhan/2018/0505/595.html //旧网址 301重定向到: https://www.tpyyes.com/a/kuozhan/595.html //新网址 |
于是我们可以在这样定义RewriteRule 301重定向规则,在“.htaccess”文件中添加如下代码:
RewriteRule ^a/(.*)/(.*)/(.*)/(.*)\.html$ /a/$1/$4\.html? [L,R=301]
代码配置解析:
我们都知道在旧网址中,第一个参数从“a”目录到595.html这个文件为止,中间有4个目录,每个目录我们可以用(.*)表示,它的意思是说网址中间的每一个目录名称都是任意字符,占位符数字顺序从1到4。
然后再RewriteRule的右边我们看到“/a/$1/$4\.html?”这第二个参数,表示新网址的规则。新网址中$1与$4表示要留下这两个位置的字符,即“kuozhan”与595这两个,所以在访问旧网址之后,会自动301跳转到新网址上了。
注意事项:
因为小编是整个网站都要跳转到新网址上,类目当然不止“a/kuozhan”这一个,比如还有“a/java”等等,由于主目录不确定,所以才用上面的规则来进行301重定向。
如果只有一个网址要做301重定向,那就简单了多了,可以直接这样在“.htaccess”文件中添加代码即可:
RewriteRule ^a/kuozhan/2018/0505/595\.html$ /a/kuozhan/595.html? [L,R=301]
总结:
万变不离其宗,小编也是根据类似上方的单网页跳转才明白多网页RewriteRule的配置规则的,要记得灵活多变哦!