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./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:///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转向(重定向跳转)。