Blog URL调整与mod_rewrite

  当初搭建WordPress的时候,懒得去新增二级域名,于是Blog地址是:http://www.oasisfeng.com/blog 现在才发现,不光是URL长了一截,就连一些Code不规范的Theme或者插件都自然而然的“假设”你的Blog在根路径(“/”)上。 唉,一念之差……

  于是决定手动为WordPress挪一下位置,Blog地址于是变成了更“舒适”的:http://blog.oasisfeng.com/

  但随即问题就来了,访问Google Blog Search上的结果就变成了经典的“404 Not Found”,这个副作用可不是我所希望的。好在之前对mod_rewrite有所了解,当即写了一个.htaccess文件放在blog文件夹下实现“301 Moved Permanently”。实验了一下,结果很奇怪:http://www.oasisfeng.com/blog/及更长的URL都被成功的重定向,但http://www.oasisfeng.com/blog(少了末尾的“/”)却被定向到了匪夷所思的http://blog.oasisfeng.com//home/oasisfeng/oasisfeng.com/blog,无论我怎么调整.htaccess都没有效果……

  无奈之下,多加了一条额外的修正规则,才算解决了上面的问题。最后的.htaccess文件内容如下:

# BEGIN 301

RewriteEngine On
RewriteBase /blog/
RewriteRule ^$ http://blog.oasisfeng.com/ [R=301,L]
RewriteRule ^/home/oasisfeng/oasisfeng.com/blog$ http://blog.oasisfeng.com/ [R=301,L]
RewriteRule ^(.*)$ http://blog.oasisfeng.com/$1 [R=301,L]

# END 301

  哪位朋友若知个中原委,还请不吝赐教,多谢了!

《Blog URL调整与mod_rewrite》有6个想法

  1. 昨天在加入页面导航链接时,才知道mod_rewrite是干啥的,然后再来这里看了下。
    看样子我比较落伍哈。

  2. 我在aaa.com这个域名下Add-on了域名bbb.com
    实质上是虚拟主机在aaa.com建了一个bbb目录,结果访问
    bbb.com和aaa.com/bbb是一样的,为了不让搜索引擎认为是复制内容,我照你的方法写了

    RewriteEngine On
    RewriteBase /bbb/
    RewriteRule ^$ http://www.bbb.com/ [R=301,L]
    RewriteRule ^(.*)$ http://www.bbb.com/$1 [R=301,L]

    结果两个链接都打不开。这是怎么回事?

  3. 抱歉,为防止Spam,所有包含两个及以上链接的评论都需要经过审核才会显示出来。

    看来你的虚拟主机提供商这一点上做的不够友好。

    .htaccess文件本身看起来没问题,不过注意要放在bbb文件夹下。另外你修改后打不开链接的具体提示是什么?404 or 500?

  4. 噢,上次我把.htaccess放在根目录下的。
    打开链接后反应超慢,空白没有提示,但看到浏览器地址栏是
    bbb.com/bbb/bbb/bbb/bbb/bbb/bbb/…
    不知道有多长,估计是陷入死循环了。

    改放在bbb文件下访问
    aaa.com/bbb提示
    Forbidden
    You don’t have permission to access /bbb/ on this server.

    Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request
    访问
    bbb.com提示
    Forbidden
    You don’t have permission to access / on this server.

    Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

    两个浏览器标题都是403 Forbidden

  5. 提示403的话,估计与虚拟主机服务器的全局设置有关,可能对mod_rewrite的使用有一些限制作用。这种问题建议还是直接咨询虚拟主机服务商的客服获取帮助。

发表评论

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