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属性,然后找到下面的代码:

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


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

#
# 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–>


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

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


保存为 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文件,写入下面的代码,然后上传到服务器根目录上:



然后通过虚拟主机管理后台软件把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转向(重定向跳转)。
原创文章,转载请注明出处:远方博客
本文固定链接:http://farlee.info/archives/wordpress-url-rewrite.html