【问题标题】:Point subdomain to root without using a subdirectory将子域指向根目录而不使用子目录
【发布时间】:2014-10-30 14:25:49
【问题描述】:

我有以下场景:

  • blog.site.com 指向 server1
  • site.com 指向server2

我希望 blog.site.com 变成 site.com/blog。所以我想我会将blog.site.com 指向server2 并放入一个子文件夹blog,我可以在其中放置一个.htaccess 文件来执行301 重定向。但是,通过创建博客子目录,它会使用空白目录覆盖 /blog/title-goes-here

我的问题是server1 正在停用,因此它不能用于 301 重定向。

有没有一种方法可以在不使用blog 子目录的情况下将blog.site.com 指向server2 变成site.com/blog/title-goes-here?还是使用blog 子目录但不干扰url?

请注意。这是一个 wordpress 网站,其中已导入来自 serve1 的帖子。将博客作为 site.com 网站的一部分非常重要。

【问题讨论】:

  • it overrides the /blog/title-goes-here with a blank directory. 什么?我不明白这一点。如果您将网站放在此目录中,并且您已确保 1.) 您已修改数据库中的 homesite_url 值,2.) 您有一个默认的 wordpress index.php 页面, 3.) 你已经重置了你的永久链接和 4.) .htaccess 的标准代码已被修改为包含 /blog/index.php 而不是 index.php 那么这应该不是问题。
  • My problem is server1 is being decommissioned and so it won't be available to be used for the 301 redirect. 好吧。您可以将blog.site.com 指向server2 并创建一个专用的VirtualHost 来响应blog.site.com 来处理301 重定向。

标签: php wordpress .htaccess mod-rewrite redirect


【解决方案1】:

除非我遗漏了什么,否则您不需要重定向 - 您需要重写规则。

让 blog.site.com 和 site.com 的 DNS 条目指向 server2。然后在server2上的.htaccess添加相应的规则:

RewriteCond %{HTTP_HOST} ^blog\.site\.com$
RewriteRule (.*) /blog/$1 [L]

现在,无论您访问site.com 还是blog.site.com,您最终都将访问同一台服务器。然后重写规则将确保blog.site.com/something 类型的请求实际调用site.com/blog/something

请注意,我尚未对此进行测试。

【讨论】:

  • 而实际的.htaccess文件可以放在路由中吗?不在子目录中?我假设 blog.site.com 将被定向到 blog 子目录?
  • 您需要将.htaccess 放在根目录中。
  • 抱歉延迟回复。这实际上不起作用。重定向有效,但由于子域映射到子目录,它被空白目录覆盖。我最终在博客子目录中复制了根文件。我可能会看看是否可以使用符号链接。
  • @iamjonesy 你真的需要解释一下自己。 “被空白目录覆盖”是什么意思?有人已经在对您问题的评论中问过您这个问题,但您没有回复。
猜你喜欢
  • 2019-04-29
  • 1970-01-01
  • 2013-09-12
  • 2014-01-28
  • 2014-02-25
  • 2011-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多