疆飞
.NET永远年轻,永远热泪盈眶...
wordpress固定链接(伪静态)详解
什么是固定链接
其他博客主人可以使用固定链接链接到你的文章上,你也可以在email中发送某篇日志的链接。所有日志的URL应为永久性、固定不变的-这就是所谓的固定链接。
固定链接的类型
默认形式(不美观的)
如:http:// example .com/?p=N 这里的N是Post ID号。它能够在所有服务器环境下使用,但这种形式的URL看起来不是很好看。
mod_rewrite类型(美观的) 这些固定链接样式可谓浅显易懂、赏心悦目。虽然这种链接的格式多种多样,但最常见的形式还是
category/post-name/或 /year/month/day/post-name。这种类型的 某些用户移除了日期元素(日,月,年)以使得永久链接格式变得更精简。
固定链接可在以下环境中工作:
具有mod_rewrite模块的Apache网络服务器 Microsoft IIS7 + 带有URL Rewrite 1.1的网络服务器 + 作为FastCGI运行的模块与PHP5 使用404处理程序或 mod_rewrite 或 mod_magnet 的LighttpdPATHINFO(完美的) PATHINFO 固定链接形式跟mod_rewrite 固定链接形式很相像,只有一点不同:前者插入了 /index.php ,如下:
/index.php/yyyy/mm/dd/post-name/ 除此之外,PATHINFO就跟mod_rewrite 固定链接一样完美了,其灵活性也很相似。mod_rewrite 固定链接所能达到的效果,PATHINFO 固定链接通过/index.php部分也能做到。
wordpress固定链接设置方法
进入wp后台->设置里面的固定链接->自定义结构
wordpress固定链接设置方法
这里有几个结构可以作为参考:
%year% 日志发表的年份,四位数字 %monthnum% 日志发表的月份 %day% 日志发表的日期 %hour% 日志发表的时间-小时 %minute% 日志发表的时间-分钟 %second% 日志发表的时间-秒 %postname%日志标题的缩略版本(日志/页面编辑界面上的日志别名)。因此“This Is A Great Post!”在URI中会变成this-is-a-great-post。 %post_id%日志的唯一ID,如123 %category%分类名称的缩略版本(添加新分类/编辑界面上的分类别名)。嵌套的子分类会作为嵌套子目录出现在URI中。出于运行方面的考虑,不推荐以%category%作为固定链接的起始部分。 %tag%标签名称的缩略版本(添加新标签/编辑界面上的标签别名)。出于运行方面的考虑,不推荐以%tag%作为固定链接的起始部分。 %author%作者名称的缩略版本. |
既然知道了我们就可以对这些开始组合了。
几种组合方式如下
/?p=%post_id%(默认的) /%year%/%monthnum%/%day%/%postname%/(年/月/日/日志名) /%year%/%monthnum%/%postname%/(年/月/日志名) /%monthnum%/%day%/%postname%/(月/日/日志名) /%year%/%monthnum%/%day%/%post_id%/(年/月/日/日志id号) /%year%/%monthnum%/%post_id%/(年/月/日志id号) /%monthnum%/%day%/%post_id%/(月/日/日志id号) /archives/%post_id%(/archives/日志id号) /archives/%postname%(/archives/日志名) /%post_id%(/日志id号) /%postname%(/日志名) /%category%/%postname%.html (分类/日志名.html) /%category%/%postname%.htm(分类/日志名.htm) /%postname%.html(/日志名.html) /%postname%.htm(/日志名.htm) /%post_id%.html(/日志id号.html) /%post_id%.htm(/日志id号.htm) |
常用的就是以htm后者html方式结尾的。当然这个可以随你的喜好自由改变。
win主机IIS 6 WordPress固定连接的设置
一般使用wordpress都会将设置固定链接(伪静态),这样更有利于seo,wordpress在LINUX系统的服务器中可以很好的使用,在Windows主机,为了完美支持伪静态就需要下点功夫。
空间需要支持rewrite组件,现在几乎所有WIN主机都支持Rewrite 组件,有个问题就是,博客链接能伪静态,可中文标签的链接打不开,比如我们设置的中文目录中文tag,就打不开了。解决WordPress博客伪静态中文标签无法打开可以使用下面的规则:
[ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 RewriteRule /tag/(.*) /index\.php\?tag=$1 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /robots.txt /robots.txt [L] RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] # For file-based wordpress content (i.e. theme), admin, etc. RewriteRule /wp-(.*) /wp-$1 [L] # For normal wordpress content, via index.php RewriteRule ^/$ /index.php [L] RewriteRule /(.*) /index.php/$1 [L] |
在使用上有什么不清楚请查看下面的参考资料,有详细的设置教程
WIN主机二级目录装WordPress固定链接设置
很多朋友主站并不想放博客,有的朋友喜欢美观想放一个主页什么的,有的是公司的网站,或者有的朋友想做淘宝客,那么这样只能把WordPress放到二级目录(子目录)里面了,wordpress在二级目录的伪静态规则规则:
[ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # Protect httpd.ini and httpd.parse.errors files # from accessing through HTTP # Rules to ensure that normal content gets through RewriteRule /blog/sitemap.xml /blog/sitemap.xml [L] RewriteRule /blog/favicon.ico /blog/favicon.ico [L] # For tag RewriteRule /blog/tag/(.*)/page/(\d+)$ /blog/index\.php\?tag=$1&paged=$2 RewriteRule /blog/tag/(.+)$ /blog/index\.php\?tag=$1 # For category RewriteRule /blog/category/(.*)/page/(\d+)$ /blog/index\.php\?category_name=$1&paged=$2 RewriteRule /blog/category/(.*) /blog/index\.php\?category_name=$1 # For file-based wordpress content (i.e. theme), admin, etc. RewriteRule /blog/wp-(.*) /blog/wp-$1 [L] # For normal wordpress content, via index.php RewriteRule ^/blog/$ /blog/index.php [L] RewriteRule /blog/(.*) /blog/index.php/$1 [L] #For page RewriteRule /blog/page/(.*)/?s=(.*) /blog/index\.php\?s=$2&paged=$1 RewriteRule /blog/page/(.*) /blog/index\.php\?paged=$1 |
win主机安装两个wordpress固定链接设置
如果根目录和子目录同时装wordpress程序,该怎么实现伪静态?
固定链接设置规则:
[ISAPI_Rewrite] # 3600 = 1 hour CacheClockRate 3600 RepeatLimit 32 # For sub RewriteRule /wordpress/sitemap.xml /wordpress/sitemap.xml [L] RewriteRule /wordpress/favicon.ico /wordpress/favicon.ico [L] RewriteRule /wordpress/tag/(.*)/page/(\d+)$ /wordpress/index\.php\?tag=$1&paged=$2 RewriteRule /wordpress/tag/(.+)$ /wordpress/index\.php\?tag=$1 RewriteRule /wordpress/category/(.*)/page/(\d+)$ /wordpress/index\.php\?category_name=$1&paged=$2 RewriteRule /wordpress/category/(.*) /wordpress/index\.php\?category_name=$1 RewriteRule /wordpress/wp-(.*) /wordpress/wp-$1 [L] RewriteRule ^/wordpress/$ /wordpress/index.php [L] RewriteRule /wordpress/(.*) /wordpress/index.php/$1 [L] RewriteRule /wordpress/page/(.*)/?s=(.*) /wordpress/index\.php\?s=$2&paged=$1 RewriteRule /wordpress/page/(.*) /wordpress/index\.php\?paged=$1 # For root RewriteRule /tag/(.*) /index\.php\?tag=$1 RewriteRule /robots.txt /robots.txt [L] RewriteRule /sitemap.xml /sitemap.xml [L] RewriteRule /favicon.ico /favicon.ico [L] RewriteRule /wp-(.*) /wp-$1 [L] RewriteRule /wordpress/(.*) /wordpress/$1 [L] RewriteRule ^/$ /index.php [L] RewriteRule /(.*) /index.php/$1 [L] |
关于规则使用设置,详细图文教程请查看下面的参考资料
win主机IIS 7 WordPress固定连接的设置
“美观的”固定链接通常会要求使用mod_rewrite,而IIS(常见于Windows服务器)却不支持mod_rewrite。(如果你在Windows上使用Apache 2.0.54,mod_rewrite可能会运行,前提是要在apache\conf\httpd.conf.中激活mod_rewrite)。
使用IIS 7并具备服务器管理权限时,可以使用Microsoft的URL重写模块来代替mod_rewrite。虽然IIS 7不完全兼容mod_rewrite,但它支持WordPress的固定链接。Microsoft的URL重写模块安装完毕后,在WordPress目录下打开web.config文件,将以下规则添加到system.webServer 元素中:
|
win主机 IIS 7伪静态规则的具体使用方法可以查看下面参考资料
IIS网站上有一份关于Microsoft的URL重写模块详细的安装指南,该模块可用于 x64 与x86系统。
如果这个方法行不通,还可以试试PATHINFO链接;将index.php/放在自定义链接结构的开始部分前:
/index.php/%year%/%monthnum%/%day%/%postname%/这个方法并不总能成功,尤其是用在运行于ISS 6上的WordPress时。要让这方法运行在IIS上,需要将以下两行代码添加到php.ini文件并将文件保存在网络根目录下。
cgi.fix_pathinfo = 1 cgi.force_redirect = 0 |
另一种解决方法是利用IIS的自定义404重定向。这要求你的虚拟主机允许你添加自定义404重定向,不过这并不需要你安装任何第三方mod_rewrite软件,也不需要你的固定链接结构以/index.php/开头。
IIS7虚拟主机装两个wordpress固定链接设置
安装两个wordpress,一个在根目录,一个在子目录(二级目录)伪静态规则设置方案:
根目录的伪静态规则设置可以看下面参考资料
在子目录(二级目录)中的安装wordpress,Web.config配置文件伪静态代码:
< ?xml version="1.0" encoding="UTF-8"?> |
解决win主机下中文目录标签出现404错误
产生中文TAG标签链接和中文别名分类目录链接无法打开的原因是WordPress不支持中文的编码。我们需要编辑WordPress源文件让它支持中文的编码形式,也就是UTF-8和GBK编码。
打开编辑wp-include/class-wp.php文件;
$pathinfo = $_SERVER['PATH_INFO']; |
替换为
$pathinfo = mb_convert_encoding($_SERVER['PATH_INFO'], "UTF-8", "GBK"); |
$req_uri = $_SERVER['REQUEST_URI'];[/php] |
替换为
$req_uri = mb_convert_encoding($_SERVER['REQUEST_URI'], "UTF-8", "GBK"); |
详细设置方案,有源文件提供下载,图文教程请查看下面参考资料
使用固定链接的一些问题
常见的几个问题
若是以/%category%/%postname%/这种方式来自定义固定链接的时候打开的网址可能会出现乱码,可能会打不开页面,那是因为分类目录和文章名字是中文引起的,这样我们可以使用英文的别名来解决。
在创建wordpress固定链接的时候会出现别名设置,选择合适的英文或者拼音。
在发布文章的时候在文件标题下方有一个固定链接,选择编辑即可。
使用固定链接的必要条件
具有mod_rewrite模块的Apache网络服务器 在WordPress主目录下 激活 FollowSymLinks选项 允许FileInfo directives(如 AllowOverride FileInfo 或 AllowOverride All) 一个.htaccess文件(若该文件缺失,WordPress会尝试在用户激活美观的固定链接时创建一个新文件) 如果你希望WordPress自动更新.htaccess文件,需要为WordPress赋予该文件的写入权限 当你新建或更新了一个“美观的”固定链接结构后,WordPress会生成重写规则并尝试将重写规则插入适当的.htaccess文件。如果WordPress无法将重写规则插入.htaccess文件,就会显示You should update your .htaccess now(请立即升级你的.htaccess文件)这样的信息,然后输出重写规则,让你复制并粘贴到文件中(将规则置于文件结尾处)。
在WordPress 2.0以及更高版本中,你可能只需要执行一次以上动作,因为WordPress会在内部运行重写规则。如果移动了WordPress主目录的地址(博客地址),就需要重复以上动作。
WordPress会与已有的.htaccess文件合作愉快,也不会删除任何已存在的重写规则或其他指令。如果你有其它mod_rewrite规则,请将你的规则优先于WordPress生成的mod_rewrite规则。
Linux主机下出现404错误页解决方案
在Linux主机下,Wordpress固定连接后,也有出现404错误页的可能!
最简单的方法如下:
自建个 TXT 文章 把下面这段代码复制进去!
RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ – [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # END WordPress |
然后把TXT文件更改名字
扩展名一起改的哦 .htaccess?
把这个文件上传到 WordPress 根目录!
- QQ932557101
- emailmail@jiangfei.net
- weibo@疆飞 (@jiangfei1006)
- twitter@疆飞 (@jiangfei1006)
PS:没事不要瞎联系,除非你想请我吃饭...
Copyright © 2008-. JiangFei.net all rights reserved
苏公网安备32048202001026号苏ICP备18062911号