【问题标题】:Rewrite URL from Subdirectory to Subdomain in Rails for Heroku在 Rails 中为 Heroku 重写 URL 从子目录到子域
【发布时间】:2014-09-15 10:41:11
【问题描述】:

我正在尝试重写:

mysite.com/blogblog.mysite.com

明确一点:我只希望用户看到 mysite.com/blog。博客实际上是一个单独托管的 wordpress 网站,位于 blog.mysite.com。 mysite.com 是一个 Rails 应用程序。

我已尝试使用 rack-rewrite 来实现此目的,我可以使其与 301 重定向一起使用,但不能与重写一起使用。

config.middleware.insert_before(Rack::Lock, Rack::Rewrite) do
  #r301   '/blog',  'http://blog.mysite.com' #works
  rewrite   '/blog',  'http://blog.mysite.com' #fails
end

我尝试在 Rails 中而不是在网络服务器中执行此操作的原因是因为我使用 Heroku 进行托管,并且我相信无法在 Heroku 上配置这种类型的重写。

所以我的问题很简单,我怎样才能实现这种重写?

附言我看到另一个帖子建议使用rack-reverse-proxy,但这个宝石似乎很老,似乎没有太大的发展。这让我对使用它感到紧张。

【问题讨论】:

    标签: ruby-on-rails wordpress mod-rewrite heroku rack-rewrite


    【解决方案1】:

    在没有替代解决方案的情况下,我搁置了保留并使用了rack-reverse-proxy gem。正如其他一些帖子中所建议的那样(SO 不允许我链接到这里)。

    它对我来说工作正常(Ruby 1.9.3,Rails 3.2.12)。

    我的代码是:

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

    在 config.ru 文件的底部。

    注意:在 Wordpress 中,我还需要在“设置”>“常规”中更改站点 URL。我将其更改为:http://example.com/blog,但我保持 .htaccess 文件不变。

    最后一点:我所有的 CSS 和 JS 都被引用了,但我的本地字体没有。我通过引用我的 rails 应用程序的资产目录中的字体解决了这个问题(而不是在我的 Wordpress 主题中)。

    【讨论】:

    • 您是否也设置了路线?我得到no route matches
    • 不 - 我确实有与此相关的路线。也许通过返回到他们页面上的基本示例来检查 rack-reverse-proxy 是否已安装和工作:github.com/jaswope/rack-reverse-proxy#usage
    【解决方案2】:

    听起来您的博客和您的网站托管在不同的地方。

    仅当您想从不同的 URL 提供相同的 rails 页面时,Rewrite 才会起作用。它在不同的主机之间不起作用: https://github.com/jtrupiano/rack-rewrite#rewrite

    最好的解决方案是让用户被重定向到子域。

    其他几个不太理想的选择:

    • 在 Rails 应用程序中使用博客的 iFrame(这使得导航和书签变得困难)
    • 使用 rack-reverse-proxy 之类的工具从您的 Rails 应用程序提供您的博客(这对用户来说会很慢,并且会降低您网站的其余部分的速度)。
    • 在 Rails 页面加载后通过 JavaScript 加载您的博客(SEO 效果不佳,可能难以导航)

    所以,我建议只使用子域。

    【讨论】:

    • 感谢您抽出宝贵时间回复乔希。我热衷于将所有内容都保留在同一个子域中以用于 SEO。尽管谷歌说没关系,others say it does。最后,尽管我有所保留,但我还是成功地使用了 rack-reverse-proxy。我即将对此进行更新/回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多