301 重定向无法正常工作
301 Redirect not working correctly
我需要将 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 错误。
非常感谢您的建议,如何解决这个问题。
您的规则顺序错误,即 最通用的包罗万象的规则 是您的第一条规则并优先于其余规则。
使用:
<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>
确保在测试之前清除浏览器缓存。
我需要将 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 错误。
非常感谢您的建议,如何解决这个问题。
您的规则顺序错误,即 最通用的包罗万象的规则 是您的第一条规则并优先于其余规则。
使用:
<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>
确保在测试之前清除浏览器缓存。