在网站运营过程中,经常遇到改版的情况,有时需要修改部分网页的目录结构,这时需要将旧的网页301到新网页。
举个实际的例子。
原来的tag系统网页结构是:tag列表网址——域名/tags/;各个tag网址——域名/tags/tagid/;
改版后的tag系统网页结构:tag列表网址——域名/chanpin/;各个tag网址——域名/chanpin/tag拼音/
设置301转跳分两步。
第一步:设置伪静态,将旧网址整体转跳到一个php页面
例子中的伪静态规则是这么写的:
RewriteRule ^tags/(.*)/$ tag301.php?tagid=$1
这样,就将所有旧页面都跳到了 域名/tag301.php 文件,接下来就通过php获取参数,将旧链接301转跳到新页面了。
第二步、PHP文件设置
在上面伪静态规则涉及的地方新建一个php文件,此php文件的作用有两个:一是网址转换,利用获取的参数将旧网址转换成新网址;二是实现301转跳。
php代码是这么写的:
function ReturnNewUrl($r){
//具体代码省略
return $url;
}
$newurl=ReturnNewUrl($_GET);
header("HTTP/1.1 301 Moved Permanently");
header("location:$nweurl");
exit;
以上省略了具体的函数写法,不同情况对应的转换网址函数不同,需要单独编写。
至此,301转换完成。可以通过站长之家的“页面HTTP状态查询”工具查询旧网址状态。