如何使用子目录而不是子域?

Edd*_*die 21 subdomain wordpress ruby-on-rails heroku subdirectory

我正在构建一个rails应用程序,我将在domain.com上的Heroku上托管.我想将WordPress用于phpfog上托管的博客,但我不想使用像blog.domain.com这样的子域名.我宁愿使用像domain.com/blog这样的子目录

它不是关于SEO ......我只是不喜欢子域名.子目录更性感(是的......我实际上是这么说的).

关于如何可靠地实现这一目标的任何想法?在此先感谢您的帮助.

小智 19

您可以使用neezer发现的rack-reverse-proxy gem来执行此操作.首先,您需要添加gem "rack-reverse-proxy", :require => "rack/reverse_proxy"到Gemfile并运行bundle install.接下来,您将修改您config.ru/blog/路线以转发到您想要的博客:

require ::File.expand_path('../config/environment',  __FILE__)

use Rack::ReverseProxy do  
       reverse_proxy /^\/blog(\/.*)$/, 'http://notch.tumblr.com$1', opts={:preserve_host => true}
end

run YourAppName::Application
Run Code Online (Sandbox Code Playgroud)

您可能已经有了第一个require语句和run YourAppName...语句.有一些重要的细节使这项工作.

首先,当您添加所需的博客URL时,您无法在其上保留尾随斜杠.如果你这样做,当有人请求时http://yourdomain.com/blog/,gem会将它们转发给http://you.yourbloghost.com//额外的斜杠.

其次,如果:preserve_host未启用该选项,您的博客托管服务器将查看该请求http://yourdomain.com/blog/而不是as http://you.yourbloghost.com,并将返回错误结果.

如果博客使用,您仍可能遇到CSS或图像问题/absolute/paths/to/images/.

  • 如果你想抓住/博客(没有尾随斜线)reverse_proxy /^\/blog(\/?.*)$/,'http://notch.tumblr.com$1',opts = {:preserve_host =>真正} (2认同)

nee*_*zer 3

我想说你最好的选择是尝试使用 Rack 中间件(类似于 Apache 的mod_proxy)进行反向代理。

快速的 Google 搜索发现了这个 gem ( https://github.com/jaswope/rack-reverse-proxy ),但作者提到它可能还没有准备好生产。拥有 Rack 中间件代理应该允许您将子域转发yourdomain.com/blog到另一个网站your-phpfog-account.com/wordpress-installation