搜索

wordpress使用404页面重写URL,分页出错解决方案

0413

因为本人的博客是在windows主机上,呃,导致wordpress不能用apache mod_rewrite。之后采取404页面重写URL,代码如下:

  1. <?php
  2. $qs = $_SERVER['QUERY_STRING'];
  3. $_SERVER['REQUEST_URI'] = substr($qs, strpos($qs, ‘:80′)+3);
  4. $_SERVER['PATH_INFO'] = iconv(“GBK//IGNORE”, “UTF-8//IGNORE”, $_SERVER['REQUEST_URI']);
  5. include(‘index.php’);
  6. ?>

以为万事俱备了,呃,昨晚测试了下,竟然分页有问题。分页链接是http://xxxxx.com/your404page.php/directory/page/2?,且next post link的链接是http://xxxxx.com/your404page.php/directory/page/2?xxxxx.com/your404page.php/directory/page/2?。说明上面的404页面代码对wordpress的支持不是很好。现改成以下代码,支持得很好。收藏着以便日后之需。嘻嘻

  1. <?php
  2. // This is the default file for the site. Usually index.php
  3. $default = ‘index.php’;
  4. $thisfile = your 404 page;
  5. $_SERVER['ORIG_PATH_TRANSLATED'] = str_replace($thisfile, $default, $_SERVER['ORIG_PATH_TRANSLATED']);
  6. $_SERVER['SCRIPT_FILENAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_FILENAME']);
  7. $_SERVER['SCRIPT_NAME'] = str_replace($thisfile, $default, $_SERVER['SCRIPT_NAME']);
  8. $_SERVER['PHP_SELF'] = str_replace($thisfile, $default, $_SERVER['PHP_SELF']);
  9. $_SERVER['PATH_INFO'] = false;
  10. $qs =& $_SERVER['QUERY_STRING'];
  11. $ru =& $_SERVER['REQUEST_URI'];
  12. $pos = strrpos($qs, ‘://’);
  13. $pos = strpos($qs, ‘/’, $pos + 4);
  14. $_SERVER['URL'] = $ru = substr($qs, $pos);
  15. $qs = trim(stristr($ru, ‘?’), ‘?’);
  16. // Required for WordPress 2.8+
  17. $_SERVER['HTTP_X_ORIGINAL_URL'] = $ru;
  18. // Fix GET vars
  19. foreach ( $_GET as $var => $val ) {
  20. if ( substr($var, 0, 3) == ’404′) {
  21. if ( strstr($var, ‘?’) ) {
  22. $newvar = substr($var, strpos($var, ‘?’) + 1);
  23. $_GET[$newvar] = $val;
  24. }
  25. unset($_GET[$var]);
  26. }
  27. break;
  28. include($default);
  29. ?>

1位同学留下了脚印

  1. 搞笑乐吧网 2011-11-07

    请问博主 “your 404 page”这里怎样填写啊,我是新手

    回复

同学有话要说吗?