首页 > 站点建设 > 修复WordPress永久链接404方法页面导航出错问题

修复WordPress永久链接404方法页面导航出错问题

2009年9月12日 发表评论 阅读评论

WordPress使用404.php实现永久链接的方法请参考《WordPress永久链接在IIS下的实现》。

发现文章多于两页时,首页底部点击下一页(链接地址为http://witmax.cn/page/2),在第二页中上一页和下一页的地址都不正确了,分别是

  • http://witmax.cn/404.php/?404;http://witmax_cn:80/page/2
  • http://witmax.cn/404.php/page/3?404;http://witmax_cn:80/page/2

显然是有问题,单击后结果也是不对的,变成显示首页了。正确的地址应该分别是

  • http://witmax.cn/page/1
  • http://witmax.cn/page/3

调试代码一级级跟踪导致以上问题的原因(追踪过程不罗列,涉及文件和函数较多),发现导航的URL输出与$_SERVER['REQUEST_URI']值有关,文章显示过程中该值发生了变化,而追踪后发现问题是$_SERVER['QUERY_STRING']和$_SERVER['SCRIPT_NAME']导致的(相关代码位于wp-settings.php文件80行附近,wordpress 2.8版本,其他版本请自行搜索)。

解决方法是增加如下两行代码:

$_SERVER['QUERY_STRING'] = "";
$_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO'];

如此,导航便正常了。


枫芸志原创文章,转载请注明来源并保留原文链接

本文链接:http://witmax.cn/wordpress-404-navi-fix.html


分类: 站点建设 标签: , 3,527次阅读
  1. 2009年9月16日13:27 | #1

    还是Linux的主机用得爽啊~~

    [回复]

  2. 2009年9月16日16:37 | #2

    @孤毒老鼠
    这个是,不过用着免费空间也就不想啥了,兵来将挡水来土掩

    [回复]

  3. 2010年5月7日13:00 | #3

    我的在本地用wamp测试,发表文章后查看,提示404错误,博主指导下如何解决问题

    [回复]

    晴枫 回复:

    @山寨笔记本, 可能是永久链接规则没效造成的,可在后台将永久链接设置改为默认试试看

    [回复]

  4. 小羊
    2010年6月6日12:43 | #4

    我也碰到了这样的问题。我看了一下原本的wp-settings.php文件80行以后的代码是:
    // Some IIS + PHP configurations puts the script-name in the path-info (No need to append it twice)
    if ( isset($_SERVER['PATH_INFO']) ) {
    if ( $_SERVER['PATH_INFO'] == $_SERVER['SCRIPT_NAME'] )
    $_SERVER['REQUEST_URI'] = $_SERVER['PATH_INFO'];
    else
    $_SERVER['REQUEST_URI'] = $_SERVER['SCRIPT_NAME'] . $_SERVER['PATH_INFO'];
    }

    // Append the query string if it exists and isn’t null
    if (isset($_SERVER['QUERY_STRING']) && !empty($_SERVER['QUERY_STRING'])) {
    $_SERVER['REQUEST_URI'] .= ‘?’ . $_SERVER['QUERY_STRING'];
    }
    请问一下,要加入了你给出的这两行代码,具体应该加在那个语句后面呢?
    谢谢!^_^

    [回复]

    晴枫 回复:

    @小羊, 在用不到$_SERVER['QUERY_STRING']值的地方之后加
    参考http://witmax.cn/wordpress-permalink-with-iis.html

    [回复]

    小羊 回复:

    @晴枫, 非常感谢晴枫,在你的指引之下,我的问题基本已经解决!

    [回复]

  5. cwz
    2010年7月20日02:06 | #5

    为什么我修改完后,整个页面居左了,而不是居中…?帮我一下,谢谢..

    [回复]

    晴枫 回复:

    @cwz, 猜测是程序有错,网页内容没有完全输出导致的

    [回复]

  6. 2010年8月30日11:03 | #6

    3.0.1中wp-settings找不到博主所说的代码,请问该怎么解决?

    [回复]

    晴枫 回复:

    @瘦米中文, 文中修改的是wp2.8版本;应该是3.0代码位置做了调整,你可以把所有wp目录下和wp-include目录下的所有php文件打开来搜索一下

    [回复]

  1. 本文目前尚无任何 trackbacks 和 pingbacks.
订阅评论
  欢迎参与讨论,请在这里发表您的看法、交流您的观点。