Old

让WIN主机支持WordPress的永久链接

此文所说方法 是非常规方法,所以不知道对于 SEO 有何影响,非常在意 SEO 者慎用,最好换主机。

其实这是前几天一个朋友遇到的问题,他向我请教为啥他的WordPress怎么也设不了永久链接,只有设为 http://域名/index.php/xxxx/xxx 方式才能正确访问文章页面,如果设为 http://域名/xxxx/xxx 方式就不能访问文章页面。

于是乎我用ftp进去看了下,他的WordPress是安装在blog这个目录下,也就是说他的博客访问方式是:域名/blog,再看看没有.htaccess,于是乎我就建了个.htaccess,设置了重写规则,但不管我怎么设置都不行。

于是叫他问空间商这个空间是啥主机,支持.htaccess否?

得到消息是:linux主机,支持.htaccess

于是又折腾一番,还是不行,而且网站根目录的路径让我很怀疑:xxx/xxx/www,这个www不是win主机经常用的么?

于是再次叫朋友质问空间商,得到答复:WIN主机,不支持.htaccess,但可以设置httpd.ini来支持(奸商无处不在,小白注意了)

于是又折腾一番,还是不行,我知道该骂谁!但骂不了……

没办法了,只有自己动手帮朋友丰衣足食了,放狗搜……搜来一大片,基本步骤是:(太多一样的文章,我不知道原文出自哪里,就叫出自互联网吧)

大概原理:利用404错误页面重定向到永久链接

1. 把下面的代码存为 404.php,放在WordPress根目录

<?php
if (strpos($_SERVER["SERVER_SOFTWARE"], "Apache") === 0){
 // Apache
 // REQUEST_URI形如"/non-exist-page.html"
 $uri = $_SERVER['REQUEST_URI'];
}
else{
 // IIS
 // $_SERVER['QUERY_STRING']形如"404;http://localhost/non-exist-page.html"
 $qstr = $_SERVER['QUERY_STRING'];
 $_SERVER['QUERY_STRING'] = "";
 $pos = strrpos($qstr, '://');
 $pos = strpos($qstr, '/', $pos + 4);
 $uri = substr($qstr, $pos);
}
$_SERVER['REQUEST_URI'] = $uri;
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
// 解决重定向的页面中的页面导航问题
$_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO'];
include('./index.php');
?>

2. 进WIN主机后台设置404错误页设为指向所有目录的404.php

3. 然后进WP后台设置永久链接

我安装步骤设置好了,可就是还不中用……(所以上面的3个步骤只适合把WP安装在网站根目录的)

分析:是不是因为WordPress放在子目录的缘故?

于是我按照下面的步骤继续:

1. 把下面的代码存为404.php,并上传到网站的根目录(WordPress在根目录下的blog子目录中)

<?php
if (strpos($_SERVER["SERVER_SOFTWARE"], "Apache") === 0){
 // Apache
 // REQUEST_URI形如"/non-exist-page.html"
 $uri = $_SERVER['REQUEST_URI'];
}
else{
 // IIS
 // $_SERVER['QUERY_STRING']形如"404;http://localhost/non-exist-page.html"
 $qstr = $_SERVER['QUERY_STRING'];
 $_SERVER['QUERY_STRING'] = "";
 $pos = strrpos($qstr, '://');
 $pos = strpos($qstr, '/', $pos + 4);
 $uri = substr($qstr, $pos);
}
$_SERVER['REQUEST_URI'] = $uri;
$_SERVER['PATH_INFO'] = $_SERVER['REQUEST_URI'];
// 解决重定向的页面中的页面导航问题
$_SERVER['SCRIPT_NAME'] = $_SERVER['PATH_INFO'];
include('./子目录/index.php');
?>

注意上面代码中红字:我朋友的WP是装在子目录blog中,所以他的是 include('./blog/index.php'))

2. 进WIN主机后台设置404错误页设为指向所有目录的404.php

3. 然后进WP后台设置永久链接

还是不行……郁闷,天气那么热还让人郁闷……

继续分析,根据错误提示,好像是wp-blog-header.php文件的路径问题

我检查了一下WP的index.php:require('./wp-blog-header.php');

正常啊,index.php和wp-blog-header.php同一个目录啊,继续郁闷……

死马当活马医

把 WP 下的 index.php 里面的

require('./wp-blog-header.php');

改为

require('wp-blog-header.php');

进WP后台一试,竟然成功了,囧~

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25192

102 comments

  1. winy winy Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

    以前就看过了,sf支持

    沙发
  2. winy winy Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

    才看见是子目录啊,有这个问题?记录下

    板凳
  3. winy winy Firefox 3.6.6 Firefox 3.6.6 Windows 7 Windows 7

    纯地板 :mrgreen:

    地板
  4. ......
  5. ithillad ithillad Google Chrome 5.0.375.99 Google Chrome 5.0.375.99 Windows XP Windows XP

    为什么要用Win主机啊?不是贵很多嘛?

    41楼
  6. 蓝冰 蓝冰 Firefox 3.6.3 Firefox 3.6.3 Windows 7 Windows 7

    多少年前就用这方法了

    42楼
  7. 指舞六弦 指舞六弦 360Safe Explorer 360Safe Explorer Windows 7 Windows 7

    :arrow: 话说当初就是因为折腾这个伪静态,
    害的我推迟了博客上线时间,本来是准备偶生日当天上线的,
    不过后来百度谷歌N+1遍,我都不晓得怎么搞定的,直接晕倒

    43楼
  8. mysuperwoofer mysuperwoofer Internet Explorer 8.0 Internet Explorer 8.0 Windows XP Windows XP

    如何增加外链,我的外链1400,如何加到5000,大家是手动加的吗,一个站一个站家的吗,太花时间了

    44楼
  9. Bee君 Bee君 Google Chrome 6.0.466.0 Google Chrome 6.0.466.0 Windows XP Windows XP

    这样做好像会对seo有影响....

    不过可以叫主机商加入规则或者自己上传ISS组件(有些主机商支持)实现...不过,win主机还是不怎么爽~特别是php

    45楼
  10. deardongdong.cn deardongdong.cn Firefox 3.6.7 Firefox 3.6.7 Windows 7 Windows 7

    我用的Win主机也不支持伪静态,好郁闷。楼主的这个方法有点得不偿失,以后直接换成Linux主机好了。

    46楼
  11. daliu daliu Firefox 3.6.11 Firefox 3.6.11 Windows XP Windows XP

    现在有国内基本上都是win主机,有几家用的是win2008,用的iis8?iis7,配置文件是web.config,wp用起来也很累,而且wp的多博客模式在这里启用不了,因为无法rewrite的缘故。google上搜索了一堆都不好用。

    47楼
  12. 迷笛 迷笛 Google Chrome 7.0.517.44 Google Chrome 7.0.517.44 Windows 7 Windows 7

    :neutral: WIN主机的确对php不怎么好用,我的也是WIN主机,以前搞个永久链接就搞了一两天,看来换主机了。

    48楼
  13. 优趣 优趣 Google Chrome 9.0.576.0 Google Chrome 9.0.576.0 Windows 7 Windows 7

    困扰啊、win 、想换个好点的

    49楼
  14. asunchou asunchou Firefox 3.6.13 Firefox 3.6.13 Windows 7 Windows 7

    再次感受到wordpress还是用linux主机好~

    50楼
  15. 皇家元林 皇家元林 Firefox 4.0 Firefox 4.0 Windows XP Windows XP

    请问下http.ini是怎么设置的呢

    51楼
  16. jack jack Google Chrome 10.0.648.127 Google Chrome 10.0.648.127 Windows XP Windows XP

    其实wordpree后台提供生成web.config文件来解决这个问题的(包括伪静态页面),见我的文章.
    http://www.iyoya.com/2011/04/17/how_to_setting_forever-link.html

    53楼
    • zwwooooo zwwooooo Firefox 4.0 Firefox 4.0 Windows 7 Windows 7

      @jack
      嗯,去年底看过有人这样设置,因为我很少接触win主机,所以没去测试。

  17. 晓兵 晓兵 Internet Explorer 9.0 Internet Explorer 9.0 Windows 7 x64 Edition Windows 7 x64 Edition

    也有Windows的Apache啊,可以试试的哦

    54楼
    • zwwooooo zwwooooo Firefox 5.0 Firefox 5.0 Windows 7 x64 Edition Windows 7 x64 Edition

      @晓兵
      问题是这里说的是购买的主机是win主机,你不能改变主机配置。

  18. Supertramp Supertramp Google Chrome 16.0.912.63 Google Chrome 16.0.912.63 Windows 7 Windows 7

    哎~
    折腾半天,现在无法访问sitemap_baidu.xml
    了~囧

    55楼

Leave a Reply