如果你的Apache、PHP、Mysql系统架构是自己配置的,或者使用一些安装包,可能会有这个问题,我曾经遇到过,用第五条解决,如下:
AllowOverride Not Enabled
服务器可能没有打开AllowOverride。如果httpd.config的AllowOverride设置的是None,那.htaccess被忽略。正确的设置:
Options FollowSymLinksAllowOverride All
也需要在DocumentRoot打开AllowOverride:
# ... other directives...AllowOverride All
其他固定链接知识:
1. 首先,固定链接。
固定链接是您个人博客中的文章、分类和其他页面的固定链接地址。如果博客的固定链接发生变化,其他人在通过之前的链接地址浏览博客时会犯错误,因此每个博客的链接地址应该固定,永远不会改变——这也是固定链接名称的起源。
固定链接类型:目前有三种基本类型:
(1)默认:/?p=N N是文章ID
(2)mod_rewrite: “漂亮的链接”
使用mod_rewrite或lighttpd可生成更好的链接地址(查看 漂亮的链接),有各种各样的链接格式,最常见和最通用的格式如下
/category/post-name/
/year/month/day/post-name
(3)PATHINFO: “更好的链接”
PATHINFO链接地址和类型mod_rewrite类型的地址看起来很像,唯一的区别就是前面了/index.php,如下: /index.php/yyyy/mm/dd/post-name除此之外,和mod_rewrite类型地址相同,可配置性相同。任何mod_rewrite链接地址可以做的事情,PATHINFO也可以。
2. 选择您的固定链接结构
在设置 → 固定链接可以选择默认格式,也可以使用结构标签在自定义结构的输入框中输入您想要的格式。如果您想激活它PATHINFO链接地址的类型,只要地址index.php/开头。
确保以%post_id%或%postname(如/%)year%/%monthnum%/�y%/%postname%/),以便每个地址对应唯一的博客。
考虑到性能,不建议以博客类型、博客标签、博客作者和博客标题为固定链接地址的开头。这些都是纯文本的属性(field),使用它们作为链接的开始,WordPress区分文章需要更多的时间(Post)地址和页面(Page)为了区分,还需要在数据库中存储额外的信息,必要的费用。推荐使用数字属性(field)作为链接的开头,如年份或文章ID。
%year%
文章发表年份,四位数,如
%monthnum%
月份,如 05
�y%
天,如 28
%hour%
小时,如 15
%minute%
分钟,如 43
%second%
秒,如 33
%postname%
文章标题的别名 (编辑文章/页面时的别名栏)。文章标题为 “This Is A Great Post!” 的%postname%是this-is-a-great-post(查看 仅仅使用 %postname%)。 由于性能原因,强烈不建议使用%postname%作为链接地址的开头。 *** 注 – 从WordPress 2.这个建议可以从0开始忽略。
%post_id%
文章的唯一ID,如 423
�tegory%
分类的别名 (新建/编辑分类时的别名栏)。 链接地址中有层次关系的类型就像有层次目录。 性能不推荐tegory%作为链接地址的开头。
%tag%
标签的别名(新建/编辑标签时的别名栏)。 由于性能原因,强烈不建议使用%tag%作为链接地址的开头。
%author%
作者别名。
3. 定制固定链接的问题。
创建或更新时”漂亮”固定链接结构时,WordPress生成新的重写规则并插入.htaccess在文件中。如果有错误,WordPress会提示You should update your .htaccess now并告诉你需要复制和粘贴哪些重写规则.htaccess文件(粘贴到文件末尾)。
WordPress不会删除.htaccess任何现有的重写规则或目录。如有其他重写规则,请将其放入其中WordPress重写规则的前面。
(1)我的.htaccess在哪里?
WordPress的index.php和.htaccess在博客地址目录下,设置博客地址,可以在常规选项中找到。由于有个”.”在文件名中,FTP除非您修改,否则客户端可能看不到它FTP所有文件,包括隐藏示所有文件,包括隐藏文件。假如你通过了Godaddy Hosting Connection installation来安装WordPress一些主机提供商(如Godaddy)不显示或不允许修改.htaccess文件。
(2)创建和编辑(.htaccess)
如果还没有.htaccess创建一个文件。如果可以通过。shell或ssh连接到服务器,直接输入touch .htaccess创建。如果使用FTP可在本地创建文件,如1.htaccess,上传到WordPress跟踪目录,然后重新命名为.htaccess。
可以通过FTP,shell编辑主机提供商可能提供的控制面板.htaccess。
如果.htaccess有错而导致(“Internal Server Error (500)”),可以使用FTP或者控制面板删除错误.htaccess。
(3)自动更新 .htaccess
如果WordPress不能自动更新.htaccess,它会告诉你原因,比如.htaccess文件可以自动更新,但目前还不能写…,该提示正在设置中→固定链接面板底部。
想让WordPress必须给出自动更新WordPress开通.htaccess写文件的权限. 确切的权限取决于你的服务器环境,试着打开文件所有者的写作权限,然后作者的小组打开写作权限,然后每个人,一步一步地测试,一旦WordPress有了写作权限,不要进一步放宽。
(4)不使用mod_rewrite的固定链接
漂亮的固定链接通常需要mod_rewrite,但是IIS(Windows servers)不支持mod_rewrite。(如果在Windows上使用Apache 2.0.54,mod_rewrite能正常工作,需要正常工作apache\conf\httpd.conf打开这个模块。
如果使用IIS 7.可使用服务器的管理权限Microsoft的URL Rewrite模块。虽然和mod_rewrite不完全兼容,但支持WordPress的”漂亮”链接。安装后打开WordPress文件夹下的web.config,添加以下规则 system.webServer节点。
4. 固定链接遇到的问题及解决方案
.htaccess一般性问题
对于WordPress没有生成.htaccess文件或新的重写规则没有写在现有文件中.htaccess文件,原因多种多样,按照下面的步骤,一步一步,注意,当前一步无效后再继续下一步。
(1)修改权限: 使用chmod将 .htaccess使用权限改为666template editor编辑,但不建议这样做,因为其他有编辑模板权限的用户也可以编辑.htaccess,可将权限改为660。
(2)防止服务器修改: 可能会阻止服务器SERVER_SOFTWARE变量的设置导致生成.htaccess失败。如果确定使用,Apache,修改wp-includes/vars.php,遵循以下步骤。
详看:/zh-cn:使用固定链接
5. 修复其它问题
若正确生成.htaccess但是固定链接还是有问题的,到了WordPress论坛How To发帖寻求帮助。
AllowOverride Not Enabled
服务器可能没有打开AllowOverride。
如果httpd.config的AllowOverride设置的是None,那.htaccess被忽略。正确的设置:
Options FollowSymLinksAllowOverride All
也需要在DocumentRoot打开AllowOverride:
# ... other directives...AllowOverride All
对于使用Mac OS X修改/修改服务器etc/httpd/sites/中的AllowOverride。
假如不想设为all,参考Apache Core Features.
翻页有问题
有时翻到第二页或其它页面不能正常工作,地址如下:
/page/2/
http://www.example.name/category/categoryname/page/2/
http://www.example/year/month/day/page/2/
http://www.example/year/month/page/2/
访问上述任何链接,提示: “Sorry, no posts match that criteria.”
这是.htaccess原因,删除,重生。
如果不行,来这里看看。this support post.
6. 小贴士和小技巧
如果想在Google News显示你的网站,你的链接地址至少以3个数字结束,通过%postname%-%post_id%很容易做到,最终生成URL如/cooking-tips-tricks-344。
地址以.html结尾
使用结构标签很容易做到这一点,比如
需要注意的是,这不会产生静态html文件,只用.html作为后缀,页面仍然是动态生成的。这会给吗?SEO好处还没有定论,但当你想从中受益时WordPress移动时会带来很多便利,因为所有页面都可以很容易地变成静态,地址不需要改变。
避免将固定链接地址分析为归档链接
也许有些人一天最多发博客,所以用%year%%monthnum%�y%这样的固定链接,这样的链接会分析成今天所有的文章。为了避免这个问题,最好使用%year%%monthnum%�y%%hour%。
检查固定链接结构
使用以下代码检查博客是否有固定的链接结构:
if ( get_option(permalink_structure) != \ ) { echo permalinks enabled }