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文章均为原创,转载请以链接形式标明本文地址
本文地址: https://zww.me/archives/25192

102 comments

  1. winy winy Firefox 3 Firefox 3 Windows 7 Windows 7

    以前就看过了,sf支持

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

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

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

    纯地板 :mrgreen:

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

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

    41楼
  6. 蓝冰 蓝冰 Firefox 3 Firefox 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 Internet Explorer 8 Windows XP Windows XP

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    51楼
  16. jack jack Google Chrome 10 Google Chrome 10 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 Firefox 4 Windows 7 Windows 7

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

  17. 晓兵 晓兵 Internet Explorer 9 Internet Explorer 9 Windows 7 Windows 7

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

    54楼
    • zwwooooo zwwooooo Firefox 5 Firefox 5 Windows 7 Windows 7

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

  18. Supertramp Supertramp Google Chrome 16 Google Chrome 16 Windows 7 Windows 7

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

    55楼

Leave a Reply