【问题标题】:Sub-domain as sub-directory in URL子域作为 URL 中的子目录
【发布时间】:2018-04-24 15:14:24
【问题描述】:

我们需要新服务器的解决方案,我们有一个主域,例如example.com 及其托管在 VPS 上,该网站位于 ASP.Net 中,带有博客,例如example.com/blog ,该博客位于子目录中并使用 Wordpress。我们有了新服务器,我们想将我们的博客移到新的 VPS 上,所以我们在主域上创建了子域,例如blog.example.com 并在控制面板和 blog.example.com 中更改 A 记录工作正常,但我们想显示这样的 URL,例如 example.com/blog/ 有什么方法可以将子域显示为子目录?主网站将保留在主服务器上,我们只需要使用子域。所以它显示了所有链接,例如 example.com/blog/post-name/

【问题讨论】:

  • “反向代理”正是您所寻找的。如果您使用 apache 并启用了 mod_rewrite 和 mod_proxy,它可以像 RewriteRule 一样简单,或者如果您将其用作前端,则可以在 nginx 中执行。
  • 谢谢,我已经安装了WHM并检查了mod_rewrite的apache模块但我找不到它。但是我找到了启用的 mod_proxy。如何激活 mod_rewrite?通过 .htaccess?
  • mod_rewrite 不太可能未启用。如果在 .htaccess 中添加RewriteEngine On,它会崩溃吗?如果是这样,您需要启用它,这就像以 root 身份运行 a2enmod rewrite 并重新启动 apache 一样简单。如果可行,请尝试P-flag
  • 我启用了它,也许它已经启用了,但是如果您分享任何我可以了解 WHM 中的反向代理的文章,那就太棒了。实际上,我只需要解决方案来从 example.com/blog 中的 blog.example.com 创建 URL,而主域 example.com 仍保留在主服务器上。谢谢

标签: wordpress .htaccess url-redirection


【解决方案1】:

在你的 .htaccess 中试试这个:

RewriteEngine On
RewriteRule ^blog/(.*) http://blog.example.com/$1 [P,L]

它使用 mod_proxy(如果它不可用会失败)来反向代理 /blog/ 下的流量。显然,如果您在两台服务器之间有大量流量或连接不良,您将需要一些可以缓存但通常效果很好的东西。

你可能需要设置

define('WP_HOME',    'http://example.com/blog');
define('WP_SITEURL', 'http://example.com/blog');

在您的 wp-config.php 中,以便内部链接指向您希望它们使用的 URL。

【讨论】:

  • 感谢您的回复,我用上面的方法试过了,但是我得到了 404 Not Found 错误。并且 mod_proxy 已启用。
  • 这很奇怪,对我来说它在多台服务器上运行良好。你看到目标服务器上的请求了吗? 404s 通常指向 mod_proxy 不可用。您是否将其置于 WP 规则之上?否则 WP 将接管并呈现您的 404。
  • 我将顶级代码放在 .htaccess 中,并在 wp-config.php 文件中定义('WP_HOME' 代码。URL 显示 example.com/blog 但出现 404 错误。我必须做些什么吗?托管我的主域 example.com 的其他服务器或 blog.example.com 服务器上的所有内容?
  • .htaccess 内容在您的主域中,只有 define 语句进入您博客服务器的 wp-config.php。
  • 嗨,谢谢你的帮助,我把代码放在主服务器和博客服务器我把代码放在 wp-config.php 上,现在 example.com/blog 工作正常,几页像登录有效,但帖子和页面链接 example.com/blog/post-name 无效,返回 404 页面。谢谢:)
猜你喜欢
  • 2013-11-15
  • 2012-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多