找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1879|回复: 0

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

[复制链接]
发表于 2011-10-23 10:27:31 | 显示全部楼层 |阅读模式
本帖最后由 青青在线 于 2011-10-23 10:28 编辑

Wordpress作为一种主流的博客系统,得到很多站长的青睐。事实上,wordpress也非常利于seo,今天就来说说wordpress中的固定链接设置以及优化。

wordpress固定链接一般有5种形式:默认的?p=id形式,日期+名称形式,数字形式,还有就是自定义结构。大家可以发现大多数的wordpress网站都是使用的最后一种自定义结构形式,因为这样的形式有利于搜索引擎优化。那么,自定义结构又应该怎么设置好呢?

一般的自定义结构主要有以下两种:直接设置为/%postname%/或者是设置成/%postname%.html。其中%postname%就是文章的自定义网址,这个在写文章的时候会自动生成以文章标题为网址的链接。当然了,中文站一般使用插件来翻译,或者是自己编辑成拼音的形式。个人推荐拼音的形式,可以把文章内容的主要关键词用拼音写出来,这样更有利于排名。

以上说的两种自定义结构都很好,那么应该选择哪种好呢?依笔者的一点浅见,选择/%postname%/结构比较好。为什么这么说呢?选择前者,事实上搜索引擎就把你的文章当成了网站子目录的首页,而选择后者就是当作根目录下的一个html文档。那么,子目录的首页和根目录的普通页面哪个权重高呢?应该是二级目录的首页,因此笔者推荐使用前者,即如同/%postname%/这样的结构。

固定链接设置好后,只要点击“更新”就可以了。如果是linux主机,wordpress会自动生成.htaccess,相当于固定链接就这样设置好了;然而windows主机就要麻烦不少,需要站长自己撰写httod.ini,并上传到根目录。这里提供一个范本。
  1. [ISAPI_Rewrite]
  2. RewriteRule /sitemap.xml /sitemap.xml [L]
  3. RewriteRule /sitemap.html /sitemap.html [L]
  4. RewriteRule /favicon.ico /favicon.ico [L]
  5. RewriteRule /wap(.*) /wap$1 [L]
  6. RewriteRule /content/uploads/(.*) /content/uploads/$1 [L]
  7. RewriteRule /wp-(.*) /wp-$1 [L]
  8. RewriteRule ^/$ /index.php [L]
  9. RewriteRule /(.*) /index.php/$1 [L]
复制代码
只要把以上代码粘贴到文本文档中,再另存为httpd.ini并上传到根目录就行了。需要注意的是,由于win主机在这方面的严重缺陷,以上代码也有个小漏洞,就是网站所有文件都无法访问。解决方法也很简单,如果是根目录的文件,只要添加RewriteRule /文件名 /文件名 [L] 就行了,而目录除了范本中已经出现的以外,只要添加RewriteRule /文件夹目录/(.*) /文件夹目录/$1 [L]就可以了。至此,wordpress的固定链接设置总算是完成了。

那么,设置了自己的固定链接,默认的?p=id形式的链接还能访问吗?答案是可以的。又要说道linux主机和win主机的优劣了。如果是linux主机,访问?p=形式的网页会自动301跳转到别名的文章页(即你自己设置的链接),然而win主机则不会,由此就造成了每个文章页面都可以用两种不同的链接访问。这样对搜索引擎是很不友好的,因此必须要让短链接301跳转到别名链接。那么怎么设置呢?只要在模板中找到header.php,在头部添加如下代码就可以了。
  1. if($_GET['p']||$_GET['page_id']){
  2. if($_GET['p'])$id=$_GET['p'];
  3. if($_GET['page_id'])$id=$_GET['page_id'];
  4. $post= get_post($id);
  5. $name=$post->post_name;
  6. header('HTTP/1.1 301 Moved Permanently');//发出301头部
  7. header('Location: '.bloginfo('url').'/'.$name.'/');
  8. exit();
  9.   }else if($_GET['cat']){
  10.   $id=$_GET['cat'];
  11.   $cat=get_category($id);
  12.   $name=$cat->slug;
  13.   header('HTTP/1.1 301 Moved Permanently');
  14.   header('Location: '.bloginfo('url').'/cat/'.$name.'/');
  15.   exit();
  16.   }else if($_GET['tag']){
  17.   $name=$_GET['tag'];
  18.   header('HTTP/1.1 301 Moved Permanently');
  19.   header('Location: '.bloginfo('url').'/tag/'.$name.'/');
  20.   exit();
  21.   }?>
复制代码
呵呵,这下总算是大功告成了,无论是linux主机还是win主机,都算是真正做好了固定链接。由此也可见,如果用wordpress系统的话,尽量使用linux主机。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|王牌互联

GMT+8, 2024-11-17 06:26 , Processed in 0.026924 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表