首页 > 网事如风 > Wordpress虚拟主机设置固定链接的技巧
2015
01-09

Wordpress虚拟主机设置固定链接的技巧

  Wordpress固定链接一般为默认的?p=id形式,或者是自定义结构。自定义结构推荐设置为/%postname%/。其中%postname%就是文章的自定义网址,这个在写文章的时候会自动生成以文章标题为网址的链接。中文站一般使用插件来翻译成拼音的形式。
  固定链接设置好后,只要点击“更新”就可以了。如果是linux主机,wordpress会自动生成.htaccess,相当于固定链接就这样设置好了;然而windows主机就要麻烦不少,需要站长自己撰写httpd.ini,并上传到根目录。这里提供一个范本。

[ISAPI_Rewrite]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /sitemap.html /sitemap.html [L]
RewriteRule /favicon.ico /favicon.ico [L]
RewriteRule /wap(.*) /wap$1 [L]
RewriteRule /content/uploads/(.*) /content/uploads/$1 [L]
RewriteRule /wp-(.*) /wp-$1 [L]
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]
  只要把以上代码粘贴到文本文档中,再另存为httpd.ini并上传到根目录就行了。需要注意的是,由于win主机在这方面的严重缺陷,以上代码也有个小漏洞,就是网站所有文件都无法访问。解决方法也很简单,如果是根目录的文件,只要添加RewriteRule /文件名 /文件名 [L] 就行了,而目录除了范本中已经出现的以外,只要添加RewriteRule /文件夹目录/(.*) /文件夹目录/$1 [L]就可以了。至此,wordpress的固定链接设置总算是完成了。
  那么,设置了自己的固定链接,默认的?p=id形式的链接还能访问吗?答案是可以的。如果是linux主机,访问?p=形式的网页会自动301跳转到别名的文章页(即你自己设置的链接),然而win主机则不会,由此就造成了每个文章页面都可以用两种不同的链接访问。这样对搜索引擎是很不友好的,因此必须要让短链接301跳转到别名链接。那么怎么设置呢?只要在模板中找到header.php,在头部添加如下代码就可以了。

if($_GET['p']||$_GET['page_id']){
if($_GET['p'])$id=$_GET['p'];
if($_GET['page_id'])$id=$_GET['page_id'];
$post= get_post($id);
$name=$post->post_name;
header('HTTP/1.1 301 Moved Permanently');//发出301头部
header('Location: '.bloginfo('url').'/'.$name.'/');
exit();
}else if($_GET['cat']){
$id=$_GET['cat'];
$cat=get_category($id);
$name=$cat->slug;
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.bloginfo('url').'/cat/'.$name.'/');
exit();
}else if($_GET['tag']){
$name=$_GET['tag'];
header('HTTP/1.1 301 Moved Permanently');
header('Location: '.bloginfo('url').'/tag/'.$name.'/');
exit();
}?>
  呵呵,这下总算是大功告成了,无论是linux主机还是win主机,都算是真正做好了固定链接。

觉得文章有用,微信打赏一元。



留下一个回复

你的email不会被公开。