WordPress seo 优化-url rewrite重写优化

作者 FarLee 2010年1月28日 17:50:02   ‖浏览(49,941)

WordPress安装好以后,可以到后台选择你喜欢的wp主题模板(控制面板-外观-添加新主题-选择主题-安装主题),主题安装好以后相关文件的位置在/themes/themeName。WordPress默认的模板和主题虽然基本都是遵循W3C标准的,为seo打下了很好的基础,不过仍有很多地方seo优化是做得不够的,因此如果想让自己的博客在搜索引擎上的排名上升得更快一些,从而能使更多的朋友和你一起分享和交流的话,在WordPress安装好后最好尽快进行WordPress优化。网上看到很多用WP博客的朋友到后面才去做WordPress seo 优化,那时包括网站架构和文章的url链接结构等等都已经确定了,再要修改必然大费周折。

WordPress优化,提到最多的就是对url的链接结构进行优化了,即url rewrite。url 重写(rewrite)能够将动态网页伪静态化,生成网页的固定链接,这点对搜索引擎友好是公认的。WordPress官网的介绍是将默认的“丑陋的链接”mod_rewrite成“漂亮的固定链接(Permalink:永久链接)”。url 重写(rewrite)其实就是应用了服务器技术和正则表达式。

一般Linux主机都能很好地支持Apache的mod_rewrite模块,要URL 重写生成永久固定链接也很简单,只要修改WordPress根目录下的.htaccess文件就可以了。但是如果你不巧选择了空间提供商的windows主机,在IIS下的WordPress url重写就不一定能得到完美的支持。下面我将WordPress 如何在apache 和IIS环境下进行url rewrite 配置做了一下整理,以及如何在WordPress管理后台进行url重写的设置步骤。

一、Apache环境下的URL rewrite:

由于Apache自带了mod_rewrite 模块,要实现URL rewrite 生成伪静态页面很方便。

1. 确认apache模块已经开启,打开apache目录下的conf/httpd.conf文件,找到LoadModule Rewrite_module libexec/mod_Rewrite.so 这一行,如果前面有 # 将其去掉;在命令行使用httpd -M查看当前模块情况.如有rewrite_module(shared)说明模块已经成功加载.

2. 配置目录的allowoverwrite属性,然后找到下面的代码:

<Directory />
Options FollowSymLinks
AllowOverride None <——将None改为ALL 保存httpd.conf 并重启Apache
</Directory>

如果设置了DocumentRoot,比如DocumentRoot "c:/www";则上面的default配置不要修改,而是修改这里的:

<Directory “c:/www”>
#
# Possible values for the Options directive are “None”, “All”,
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that “MultiViews” must be named *explicitly* — “Options All”
# doesn’t give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.2/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride All <--将None改为ALL-->

#
# Controls who can get stuff from this server.
#
Order allow,deny
Allow from all <--将Deny改为Allow-->
</Directory>

3. 创建.htaccess文件,新建一个txt文档,将其命名为htaccess.txt,然后在文档里写入下面的代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

保存为 htaccess.txt 上传到网站根目录下,最后将文件名修改为 .htaccess,这样在apache环境下服务器端的url rewrite配置就完成了。

注1:如果你用的是虚拟主机,一般成熟的Web 服务器应用套件,都支持URL重写的,比如drupal和joomla 。隐藏他们会默认开启mod_rewrite 模块,或者你可以登陆到虚拟主机管理后台进行URL rewrite设置,也不需要你更改httpd.conf文件和.htaccess文件了,具体可以咨询你的主机空间提供商。

注2:Apache服务器支持.htaccess文件,IIS是不支持的,在IIS环境下上传了.htaccess文件也没用。

二、IIS环境下的URL rewrite:

在windows主机IIS环境下,主机不支持mod_rewrite,有人在IIS7下测试过,WordPress有内建的url rewrite模块支持IIS7 。IIS 6 等的url rewrite可以有以下几种解决办法。

1. 第一种方法,可以在WordPress管理控制后台设置 http://example.com/index.php/年/月/日/日志名/ 这种形式的URL 重写。这里的index.php不能去掉(请看下面第三大点)。

2. 用ISAPI 实现url Rewrite

ISAPI 是英文“ Internet server application programming interface ”的缩写,字面的翻译为:英特网服务器应用编程接口。实际上,ISAPI是微软为了扩展其主打WEB服务器产品IIS,为高级编程人员提供的一项特定技术,使得编程人员可以在服务器级上使用底层的API(应用编程接口)编程,扩展IIS功能。编写良好的ISAPI差不多可以接替IIS的全部工作,按照程序设计者的意图完成WEB应用。ISAPI编程与目前流行的其它web开发方式比较,其优势在于:性能、安全、全功能等方面。不少权威机构做过评测,ISAPI在各项指标上均领先于NSAPI(网景提供的一项服务器应用接口技术),与目前被大量使用的web开发脚本语言,比如ASP,PHP,JSP等比较,根本不在一个数量级。对于程序员来说,直接使用“应用编程接口”是一件令人兴奋的事情。在GInfo虚拟网站平台上开发网站,与“高效”等义。

ISAPI可用于支持URL rewrite(Url重写)。我们可以自己将相关的dll文件上传至指定目录,并点击添加 ISAPI筛选器 即可生效。理论上ISAPI可以支持任何系统的url rewrite,同时可以扩展支持其他isapi筛选功能。

具体操作时,创建httpd.ini文件或修改httpd.ini的内容,自定义RewriteRule的规则,然后上传到指定目录就可以了(注:以下RewriteRule重写规则根据WordPress版本和url重写方式的不同而有所不同,做些相应的改动即可):

[ISAPI_Rewrite]

# WordPress rewrite rules

# /%year%%monthnum%%day%/%postname%/

RewriteRule /tag/(.*) /index\.php\?tag=$1

RewriteRule /(about-me)/ /index.php\?pagename=$1

RewriteRule /category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php\?category_name=$1&feed=$2

RewriteRule /category/?(.*)/ /index.php\?category_name=$1

RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed.php\?author_name=$1&feed=$2

RewriteRule /author/?(.*) /index.php\?author_name=$1

RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2

RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2

RewriteRule /page/(.*)/ /index.php\?paged=$1

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5

RewriteRule /([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&day=$3&page=$4

RewriteRule /([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&page=$3

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&feed=$5

RewriteRule /([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/trackback/?$ /wp-trackback.php\?year=$1&monthnum=$2&day=$3&name=$4&tb=1

3. IIS 下用404页面实现url 重写

新建一个wp-404.php文件,写入下面的代码,然后上传到服务器根目录上:

<?php
$qs = $_SERVER['QUERY_STRING'];
$pos = strrpos($qs, '://');
$pos = strpos($qs, '/', $pos + 4);
$_SERVER['REQUEST_URI'] = substr($qs, $pos);
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
include('index.php');
?>

然后通过虚拟主机管理后台软件把404页面指向wp-404.php。最后去WordPress后台,设置一下Permalink(请看下面第三大点),刷新一下首页,URL rewrite就可以正常工作了。在Windows 2003 + IIS6.0下试验成功。我觉得一些Linux主机,如果不支持.htaccess的话,也可以使用这种办法进行URL重写。有一个问题是不支持中文,postname和tag最好是英文的,中文的tag可以去设置一下tag slug。不过很多人怀疑用404页面设置url rewrite 会使404页面设置不能正常发送404 HTTP header,因此这种方法不建议使用。

三、WordPress管理后台设置固定连接(url rewrite)

上面两步在服务器端的url rewrite 支持解决了以后,就可以在WordPress管理后台设置固定链接了。如果apache或IIS服务器端url rewrite规则没有启用,在控制后台设置了固定链接后,将打开一个网页不存在的404页面。因为WordPress后台设置固定链接,只是设置了你的WordPress博客架构里的链接表现形式。具体的设置步骤如下:

1. 进入管理后台-设置-固定链接-常规设置,可以设置4种不同形式的固定链接,具体请见后台。

2.注意:在永久固定链接中,不要出现日期和分类名称,除了id,这些可以修改的变量参数最好都不要用在固定链接中,因为一旦修改了文章发表日期,老的固定链接将失效,同时一篇文章属于多个分类时,将出现复制页面。对搜索引擎不友好。不要将文件目录设置得很深,比如年/月/日/分类名/文章名这种固定链接就太深了,给搜索引擎抓取页面造成了一定的难度。另外固定链接中也不要出现中文字符,毕竟搜索引擎对中文字符的识别性不是很好,也会导致网址太长不美观。

3.对于IIS,新增加一个页面pages,每增加一个就要添加一个RewriteRule到httpd.ini文件中。

4.可以为分类和标签设置别名。文章和页面也可以设置别名,不过只有在启用了固定链接同时自定义中含有%postname%时,固定链接才能点击设置。如果在默认的链接状态下,是无法为文章和页面pages增加别名的。

其他关于wordpress url rewrite 的文章延伸阅读:WordPress标签分页url rewrite重写规则WordPress url重写日期存档文章的固定链接,以及ISAPI Rewrite实现IIS 301转向(重定向跳转)


“WordPress seo 优化-url rewrite重写优化”文章评论(41)

  1. Hello! Can you tell me how i can register mail at google.com

  2. Hello. And Bye.

  3. 非常有用,正好需要,谢谢博主了!博主有时间回踩我的小站啊,www.crasymind.com

  4. [ISAPI_Rewrite]
    # Protect httpd.ini and httpd.parse.errors files
    # from accessing through HTTP
    # # 形式:/article/PostID.htm
    # # 自定义链接 /article/%post_id%.htm

    RewriteRule /article/tag/(.*) /index\.php\?tag=$1
    RewriteRule /tag/(.*) /index\.php\?tag=$1
    RewriteRule /(about|contact|about-copyright|favor|archives|tags|sitemap|taotao) /index\.php\?pagename=$1
    RewriteRule /article/category/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?category_name=$1&feed=$2
    RewriteRule /article/category/?(.*) /index\.php\?category_name=$1
    RewriteRule /author/(.*)/(feed|rdf|rss|rss2|atom)/?$ /wp-feed\.php\?author_name=$1&feed=$2
    RewriteRule /author/?(.*) /index\.php\?author_name=$1
    RewriteRule /rss.xml /wp-feed\.php/\?feed=rss2
    RewriteRule /feed/?$ /wp-feed\.php/\?feed=rss2
    RewriteRule /comments/feed/?$ /wp-feed\.php/\?feed=comments-rss2
    # RewriteRule /([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&page=$2
    # RewriteRule /article/([0-9]+)/?([0-9]+)?/?$ /index\.php\?p=$1&page=$2
    RewriteRule /article/([0-9]+).htm /index\.php\?p=$1 [I]
    RewriteRule /page/(.*)/?s=(.*) /index\.php\?s=$2&paged=$1
    RewriteRule /page/(.*) /index\.php\?paged=$1
    RewriteRule /article/date/([0-9]{4})([0-9]{1,2})([0-9]{1,2})/([^/]+)/?([0-9]+)?/?$ /index\.php\?year=$1&monthnum=$2&day=$3&name=$4&page=$5
    RewriteRule /article/date/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&day=$3&page=$4
    RewriteRule /article/date/([0-9]{4})/([0-9]{1,2})/?$ /index\.php\?year=$1&monthnum=$2&page=$3
    RewriteRule /article/([0-9]+).article/(feed|rdf|rss|rss2|atom) /index\.php\?feed=rss2&p=$1
    RewriteRule /article/([0-9]+).article/trackback /wp-trackback\.php\?p=$1

    楼主您好,为啥我用了这个url rewrite后其他正常在提交回复的时候就不能打开网页了。但是实际上数据还是提交上去了的。后台能看到。
    请问是怎么回事呢?

    • 请问若显示分类的页面的链接该如何设置,比如说现在网站的分类页面显示的是www.pmlj.net/?cat=1,这个是默认设置,怎么显示为www.pmlj.net/cat_name/这种形式,谢谢!

      • RewriteRule /?(.*) /index\.php\?category_name=$1

  5. 方法很好,不过404.php那个方法,应该是很好的。在这里可以正常发送404header. 看怎么写了就是。不过404那个我试了一下。有些问题。

  6. 没找到自己要用的!!

  7. 雁过留声 看了你的分析 了解了一些 学习了 我的文章URL就是太深了 不知道怎么解决
    上海网站建设 麻烦帮看一下 谢谢

  8. 写的不错,支持一下。peepay.

  9. 还是不会用。。。纠结。。怎么都出错。。。

  10. 很多是用的知识

  11. 受教 ~~谢谢

  12. メンズ水着 通販 格安

  13. louis vuitton 人気

Trackbacks/Pingbacks

  1. Wordpress教程-主题模板/插件/函数 - 远方博客
  2. Wordpress 博客本地安装blog - 远方博客
  3. Google 网站管理员工具功能和使用方法 - 远方博客
  4. WordPress标签分页url rewrite重写规则 - 远方博客
  5. WordPress博客! - 远方博客
  6. wp-pagenavi分页插件使用trim函数去除斜杠/ - 远方博客
  7. 安装IIRF实现iis服务器wordpress重写URL方法 = 飞龙博客 飞龙在天
  8. CodeIgniter 用户手册:controllers(CI 2) - 远方博客
  9. wp-super-cache插件缓存生成静态html文件 - 远方博客
  10. HuaCracKer ' s Blog -【 未亡人 】 › wp-super-cache插件缓存生成静态html文件
  11. wordpress登陆后台跳转到404页面 – 远方博客
  12. centos lemp搭建wordpress(nginx+php-fastcgi) – 远方博客
  13. WordPress seo 优化-url rewrite重写优化 – 远方博客 | 第一整站站
  14. WordPress标签分页url rewrite重写规则 – 远方博客 | 第一整站站
  15. wp-pagenavi分页插件使用trim函数去除斜杠/ – 远方博客 | 第一整站站
  16. centos lemp搭建wordpress(nginx+php-fastcgi) – 远方博客 | 第一整站站
  17. CodeIgniter 用户手册:controllers(CI 2) – | 第一整站站
  18. robots.txt用法和seo作用 | ★恩施SEO_恩施州网站SEO优化建设★赢源勤恩施seo优化第一人/怎样利用网络如淘宝客赚钱创业
  19. 村儿里的 » wordpress URL rewrite
  20. robots.txt用法和seo作用-Googlebot/Baiduspider - 让让在线
  21. WordPress seo 优化-url rewrite重写优化 « Hovers
  22. wp-super-cache插件缓存生成静态html文件 – 木易岩心
  23. Balboa Emergency Medical Technician
  24. adult seo
  25. towing san jose

来说兩句