从国外免费Linux空间成功搬回国内Win主机空间

在 2008-11-29 发布于 网站相关 下以来已有7,205人读过本文 | 16条评论 发表评论

三天前(27号)在宽元买了自己的空间,不过是Win主机,又是IIS环境。因为是第一次购买空间,买前对这些东西也没有做太多了解,只是因为朋友enjoyd.com站长的推荐,他买了这款空间,我就跟着也买了。

但买回来以后,却遇到了很大的麻烦。

首先是我的FTP软件cuteFTP无法顺利使用,建立好FTP站点,点击连接之后,软件总是停留在FEAT命令不动,持续到大概软件默认的6000秒超时以后,提示连接中断。每次都是如此,也不知道究竟是什么原因。要知道,我连接其他的FTP站点时,可都是没有出现任何错误,十分顺利和正常的。可也没有办法,终于,后来在网上仔细搜索了很久,修改了软件的一个设置,算是成功连上了。

修改的设置如下:在软件的全局选项对话框中,找到连接选项,在对话框右侧的连接选项的设置中,取消选择“登录到确定功能支持之后发送FEAT命令”。应该是空间对FEAT这个FTP命令支持的不是太好,或者是因为我是使用代理上网的原因吧。不过总算是解决了这个问题,可以顺利地使用FTP软件了。

第二个问题是我备份的51blog数据库无法成功导入到空间提供的数据库中,总是提示wp_comments表导入错误,貌似是因为有重复的键值,但错误代码我已经记不清楚了。后来在宽元技术支持的帮助下,算是成功导入了。数据库以及其中的内容也都没有了任何问题,网站使用也完全正常了。

可遗憾的是,正在我暗自高兴搬家终于成功了的时候,结果发现我在原来空间上自定义的永久连接(形如:http://www.yueye.org/2008/move-from-linux-win-host.html)不能使用。除了站点主页可以正常打开外,其他的如文章页面,分类页面,标签页面等等,全部不能打开。仔细考虑了一下,心想应该是因为原来在国外免费空间上是Linux主机,即所谓的LAMP主机,在LAMP主机上实现这样的链接是十分简单的事儿,只需空间支持.htaccess,然后上传经典的.htaccess文件并修改权限为777即可直接设置了;但现在却不是那么容易的事情了,搬回的国内的空间,应该是Win主机,问了一下客服,果然如此。于是就在Google上搜“Win主机 WordPress 伪静态”,一个个仔细地查看搜索结果,发现方法无外乎这样几种:

1.无Rewrite模块,不使用cos-html-cache插件:

此方法使用的是404错误页转向的特性,修改一下空间的404.php文件,将404错误页面指向该文件,即可成功实现伪静态。404.php文件的内容如下:

<?php
header(“HTTP/1.1 200 OK”);
$ori_qs = $_SERVER[‘QUERY_STRING’];
$pattern = ‘/[^;]+;[^:]+:\/\/[^\/]+(\/[^\?]*)(?:\?(.*))?/i’;
preg_match($pattern, $ori_qs, $matches);
$_SERVER[‘PATH_INFO’]   = $matches[1] . ‘?’ . $matches[2];
$_SERVER[‘REQUEST_URI’] = $_SERVER[‘PATH_INFO’];
$query_args             = explode(‘&’, $matches[2]);
unset($_GET);
foreach ($query_args as $arg)
{
$the_arg = explode(‘=’, $arg);
$_GET[$the_arg[0]] = $the_arg[1];
}
include(‘index.php’);
?>

但我因为我的空间可以支持一个文件夹绑定域名,而我的博客正是放在空间的该子文件夹下面的,似乎这个文件夹和根目录没有什么关系,所以设置的404页面并不能成功指向。后来我让客服把子文件夹的404页面帮我指向子文件夹中的404.php,结果更怪的事儿出现了,系统竟然把文件的内容像普通的文本文件一样直接显示了出来,而没有对其进行解释执行。我很无奈,求助客服,搞了很久也没有搞出来个所以然来。无奈,只好放弃这种方法。

2.无Rewrite模块,使用cos-html-cache插件:

这种方法就是在WordPress上安装一个cos-html-cache插件,但我仔细看了下发现,只是生成了静态页面,并没有实现我们所说的伪静态。我仔细考虑了一下,应该有部分原因是404页面不能解释执行的缘故吧。既然不能实现真正的伪静态,自然让人感觉十分不爽,于是,只好又放弃了这种方法。

3.启用Rewrite模块,使用ISAPI Rewrite组件wp-url-rewriting.dll

此法详见一位网友的WordPress在Win-iis中的完美rewrite实现方法一文,但很遗憾的是,按照他的方法,我进行了详细的设置,而且又让空间商的技术支持帮忙启用了Rewrite模块,加载了ISAPI Rewrite组件wp-url-rewriting.dll,可终究还是没有成功,伪静态仍然未能实现。

而且,就在我搜索其他方法的时候,技术支持又和我说加载ISAPI Rewrite组件wp-url-rewriting.dll之后,会对其他人的网站有影响,必须卸载。卸载就卸载吧,反正这种方法也行不通。

4.启用Rewrite模块,修改httpd.ini规则:

该法相见网友文章:解决wordpress ISAPI网页静态化。这种方法不需要多余的步骤,只要空间商启用了Rewrite模块,我们自己再在网站的根目录上上传一个httpd.ini文件即可,点击此处下载该文件。

httpd.in文件是一个Rewrite规则,该规则如下:

[ISAPI_Rewrite]
# Defend your computer from some worm attacks
#RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]
# 3600 = 1 hour
CacheClockRate 3600
RepeatLimit 32
# Protect httpd.ini and httpd.parse.errors files
# from accessing through HTTP
# Rules to ensure that normal content gets through
RewriteRule /software-files/(.*) /software-files/$1 [L]
RewriteRule /images/(.*) /images/$1 [L]
RewriteRule /sitemap.xml /sitemap.xml [L]
RewriteRule /favicon.ico /favicon.ico [L]
# For file-based wordpress content (i.e. theme), admin, etc.
RewriteRule /wp-(.*) /wp-$1 [L]
# For normal wordpress content, via index.php
RewriteRule ^/$ /index.php [L]
RewriteRule /(.*) /index.php/$1 [L]

启用模块,把下载的httpd.ini文件上传到网站的根目录,困扰我长达3天,让我茶不思饭不想,觉都睡不着的伪静态问题终于解决了。

所以,现在,我高兴的宣布,在经过宽元刘哥、宽元技术支持的汪先生、王先生的帮助之后,我终于在Win主机IIS环境下成功的实现了WordPress的伪静态!而且这种伪静态是我一直以来十分喜欢的形式,在链接中没有讨厌的index.php,对搜索引擎也没有什么影响。我做到了!你呢?你实现了自己的WordPress的伪静态了吗?

16条评论

  1. 蓝梦
    2011/06/02 13:32:43

    如何解决不能评论问题

    回复评论

    月夜 说:

    从何说起?

    回复评论

  2. mice
    2009/04/16 19:46:44

    厄,我觉得还蛮好的啊,速度都行…

    回复评论

    admin 说:

    囧。。那是因为我现在用的已经不是宽元的了啊。。呵呵。。原来用着的时候整天郁闷到不行。。

    回复评论

  3. mice
    2009/04/15 15:27:04

    哇哈哈 必须膜拜 竟然搜索到 我们俩都是宽元的 = =。

    回复评论

    admin 说:

    呵呵。。目前我已经弃用宽元了,比较垃圾的说。。不过还有好久才到期呢,放那儿挺浪费。。有点郁闷的说。。

    回复评论

  4. MOMO
    2009/03/30 10:12:37

    我的博客安装在子目录下面的,请问我也可以用上面的规则吗,还是要修改一下呢!谢谢!!还有就是我的rewrite模块放在一个名字叫做rewrite的文件夹下面的,我是把httpd.ini放在根目录还是放在rewrite的文件夹下面呢!!

    回复评论

    admin 说:

    这个我也不是太清楚,呵呵。。
    我用的是虚拟主机,你可以慢慢试试看。。。相同的httpd.ini放根目录下试试是否可以。。然后慢慢修改下看看。。

    回复评论

  5. MOMO
    2009/03/30 03:27:31

    测试!!

    回复评论

  6. 逗逗
    2009/03/17 14:05:12

    谢月夜的回答,空间支持的.
    虚拟主机有个子目录bbs放的是discuz论坛.我把WP也放在子目录里.根目录下httpd.ini里有写discuz的伪静态规则.

    回复评论

    admin 说:

    嗯,那你自己针对WordPress写好httpd.ini之后,进后台设置永久链接,估计就可以了吧。。

    回复评论

  7. 逗逗
    2009/03/17 11:20:07

    我用了最好一种方法,有点问题.文章内容区域会出现:Page Not Found!Please try again.
    不知道什么问题?

    回复评论

    admin 说:

    请检查空间商是否启用了Rewrite模块?永久链接是否正确设置?httpd代码是否和你的永久链接形式符合?等等。。

    回复评论

  8. admin
    2008/11/30 17:24:12

    呵呵,速度确实不错,但我现在用了一段感觉限制太多了。。用着很不爽的。比如伪静态设置,比如发送邮件的mail函数。。我都愁死了。。以后看看吧。。有好的空间就换了。。

    回复评论

  9. -.-坏人
    2008/11/30 17:12:05

    还是这速度好

    HZS的速度不咋的

    回复评论

发表评论

您的昵称 *

您的邮箱 *

您的网站