301重定向无法正常工作

时间:2015-05-27 13:53:34

标签: apache .htaccess redirect mod-alias ghost

我需要将在Ghost上运行的子域名上的博客及其所有帖子重定向到新位置。目前位于http://blog.example.com,需要重定向到http://example.com/blog/

对于原始的Ghost博客,Apache被用作代理,因为Ghost正在node.js上运行。出于这个原因,我不能简单地在Ghost安装的根文件夹中使用.htaccess

我使用301 redirection generator设置所有必需的重定向,然后将代码直接放在etc/apache2/sites-enabled/000-default.conf中,如下所示:

<VirtualHost *:80>
  ServerName blog.example.com

  Redirect 301 / http://example.com/blog/
  Redirect 301 /post-title-1/ http://example.com/blog/post-title-1.html
  Redirect 301 /post-title-2/ http://example.com/blog/post-title-2.html
  Redirect 301 /post-title-3/ http://example.com/blog/post-title-3.html

</VirtualHost>

然后我重新启动了服务器。

http://blog.example.com现在正确重定向到http://example.com/blog/,但各个帖子指向错误的位置。而不是应用新位置,例如post-title-1.html,它们指向http://example.com/blog/post-title-1/,逻辑上会抛出404错误。

非常感谢你的建议,如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

您的规则排序错误,即最通用的全能规则是您的第一条规则,并优先于其他规则。

使用:

<VirtualHost *:80>
  ServerName blog.example.com

  Redirect 301 /post-title-1/ http://example.com/blog/post-title-1.html
  Redirect 301 /post-title-2/ http://example.com/blog/post-title-2.html
  Redirect 301 /post-title-3/ http://example.com/blog/post-title-3.html
  Redirect 301 / http://example.com/blog/

</VirtualHost>

确保在测试之前清除浏览器缓存。