看来这个服务器重定向问题可能更适合 serverfault 而不是 wordpress stack exchange。
最初,我们在 example.com 上有一个静态营销网站,并在 www.joesexample.com/blog 上托管了 wordpress 博客。
我们现在正在将该博客移至 blog.joesexample.com。但是,该博客托管在不同的服务器上(服务器名称相同,但 WP 特定主机不同)。
而原有的营销网站仍托管在原有的另一台服务器上。
因此,我们大概会在 www.joesexample.com/blog 的原始主机上清空该文件夹并添加一个需要 301 重定向的 .htaccess,这样访问 joesexample.com/blog 的任何人都将被永久重定向到 blog.joesexample.com,同时所有帖子都会重定向到新位置。例如,将 www.joesexample.com/blog/2014/01/my-post-title/ 重定向到 blog.joesexample.com/2014/01/my-post-title/
根据 Google 的搜索结果,可以进行以下操作:
RewriteEngine ON
RewriteCond %{REQUEST_URI} ^/blog
RewriteRule ^(.*)$ http://blog.joesexample.com/$1 [R=301,L,P]
不确定因为它们位于不同的服务器(ips)上,这是否重要,我认为不会有关系,因为域名是相同的,而且如果该规则只涵盖主博客主页重定向或所有帖子,我不确定它是否会重定向年/月/帖子标题格式的帖子。
最后,我之所以先在这里询问而不是自己简单地测试,是因为另一个人可以访问这个特定的服务器,所以我想在让他们尝试之前确信它能正常工作。
更新 - 继续尝试让该人使用上述 htaccess。一切似乎都有效,只是它没有重写 url 字段中的 URL。
我的意思是如果我去http://www.joesexample.com/blog现在可以正确显示来自http://blog.joesexample.com但 URL 字段仍然显示http://www.joesexample.com/blog。所以听起来我仍然需要一个额外的 htaccess 规则来改变 URL 栏中的 URL 外观。有什么想法吗?
答案1
您正在使用[P]
导致请求由 mod_proxy 处理的标志。
如果您希望使用 HTTP 301 代码重定向浏览器并因此显示真实的 URL,那么您的标志应该只为[R=301,L]
。
这可能会帮助你: