«

»

Apr 24 2018

使用 .htaccess 实现 rewrite 进行网站搬家

因为 chdzone 这个网站已经有好几年没维护了,占着个二级域名还要维护证书,颇觉浪费,遂将其移动到主域名目录下。

问题

单纯的只要把数据移动到新位置其实就可以,但互联网上仍有很多地方保留有旧的 URL ,如果用户去点击这些旧的 URL 的话,就会出现 404 错误。数据都还在的,但是位置变了。这里就要实现不仅仅是域名的变更,还要实现旧 URL 跳转到新 URL 的无缝跳转。

探寻

网站搬家使用 301 跳转是毋庸置疑的,可选语言不多,php,js,还有一些五花八门的方法。

在网上搜了一下 301 跳转,彰显天下文章一大抄的特点。几乎所有文章都是只写了表皮,其结果就是:

不论用户输入的网址是什么,均跳转到新网址的根目录。

用户点击旧的 URL 但是却跳转到新网址的根目录下,淘宝天猫尿得好。

尝试

首先考虑下网站结构以及之前对外公开的 URL,原网站是纯静态网址,所有页面都是无参数的静态 URL。因为地址不是参数,index.php 不能直接读取,依靠 PHP 进行跳转就不可能了。同理 js 也有相同的问题。

所以就只能靠 mod_rewrite 来实现了。

开始搬家

首先把静态文件转移到新地址。

之后编辑原地址的 .htaccess 文件

为确保 .htaccess 能够生效,需要检查 apache2.conf 中的 AllowOverride 是否为 None,如果为 None 的话 .htaccess 是无法覆盖默认配置的。

为确保 rewrite 能够生效,需要启动 mod_rewrite 。如果没有启动的话,执行:

这样就 OK 了

补充资料

注意我的服务端是 Apache ,对于其他 HTTP 服务端并不适用。

2 comments

  1. 法律派

    以前用wordpress建站,换了不少主机商,网站数据也是删了多次,又上传。现在用这个平台,感觉还很省事。

  2. 钛客志

    网上那些跳转方案,确实根本就不能指定域名跳转到新的域名,跳到新域名倒是没问题,其他都是404,博主的方案参考了

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据