让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

“让WIN主机支持WordPress的永久链接”有102条评论

  1. winy says:

    以前就看过了,sf支持

  2. winy says:

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

    1. zwwooooo says:

      @winy 就这个子目录折腾人

  3. winy says:

    纯地板 :mrgreen:

  4. ifenwen says:

    我的win主机好像有.htaccess这个啊

    1. zwwooooo says:

      @ifenwen 不是所有win主机

  5. 风吟 says:

    用404跳转是很作孽的行为 慎用。。

    1. zwwooooo says:

      @风吟 呵呵,没办法的办法,除非换主机

  6. hzlzh says:

    404不好吧,对seo?

    1. zwwooooo says:

      @hzlzh 可能,没研究

  7. 囧啊囧 says:

    Linux系统的路过。

  8. 万戈 says:

    文囧,我懂的 :mrgreen:

    1. zwwooooo says:

      @万戈 文囧写写一些遇到的问题,还是有人需要的

  9. max says:

    还是用 Linux 方便 :mrgreen:

    1. zwwooooo says:

      @max wp还是用linux吧,或者说php还是用linux吧

  10. MOPVHS says:

    V5...PHP就应该配Linux~~~

    1. zwwooooo says:

      @MOPVHS 对,用win主机来php本身就是蛋疼

  11. tcsky says:

    不知道能不能把邮件支持打开,东东,用的服务器不支持,插件都没法实现

    1. zwwooooo says:

      @tcsky 貌似有插件可以代替

  12. 俺现在就用了index

    1. zwwooooo says:

      @软件盒子 大部分人不喜欢这样用

  13. 蛋卷 says:

    还没有用过win的主机

    1. zwwooooo says:

      @蛋卷 asp的话就用win好

  14. reizhi says:

    这个我以前也遇到过,真的很麻烦

    1. zwwooooo says:

      @reizhi 所以折腾wp还是linux的好

  15. 阿邙 says:

    奸商无处不在啊 :evil:

    1. zwwooooo says:

      @阿邙 的确,特别要小心

  16. Mucid says:

    非常讨厌瘟到死主鸡。。 :evil:

  17. Mucid says:

    难道不能用xampp?win也可以用apache啊。。

    1. zwwooooo says:

      @Mucid 囧~你说啥呢,一般主机商不会用XAMPP,这个一般是给本地搭建php+mysql环境的……

    2. Mucid says:

      @zwwooooo
      Hoho我还用那个玩偷菜呢,貌似抗几个blog没一点问题,Uchome就不用说鸟。。

  18. 球犯 says:

    真是奸商啊,win主机还骗你是Linux的

    1. zwwooooo says:

      @球犯 很不负责的主机商

  19. 我很喜欢你们搞wordpress这些东西哦! :razz:

    1. zwwooooo says:

      @WordPress啦 你那里才是wp的大学堂

  20. zrqx008 says:

    对国内的比较适用

    1. zwwooooo says:

      @zrqx008 我觉得php的话还是linux主机好

回复给 mysuperwoofer ¬
取消回复

昵称 *

网址

B em del U Link Code Quote