【发布时间】:2015-04-10 11:00:44
【问题描述】:
我目前有一个 Rails 应用程序 my_app.com 和一个相关的 Wordpress 博客 blog.my_app.com。它们都在 Heroku 上独立运行(即没有 Apache 或 Nginx 脚本)
我正在尝试将博客移动到 Rails 应用程序的子文件夹 my_app.com/blog,而不会丢失博客现有的任何 SEO“果汁”。
我已经实现了 rack-reverse-proxy gem,并且博客的主页尽职尽责地出现在 http://my_app.com/blog/ 上。但是,博客中嵌入的所有链接仍然指向子域,而不是应用程序的博客文件夹。
如何配置博客链接到http://my_app.com/blog/post1 而不是blog.my_app.com/post1??
我的 config.ru 文件:
require ::File.expand_path('../config/environment', __FILE__)
use Rack::ReverseProxy do
reverse_proxy(/^\/blog(\/.*)$/, 'http://my-blog.herokuapp.com$1', opts = {:preserve_host => true})
end
use Rack::Deflater
run MyBlog::Application
在我的 routes.rb 中:
constraints domain: 'blog.my_app.com' do
get '(*path)' => 'application#blog'
end
get "/blog" => redirect("/blog/")
在我的应用程序控制器中:
def blog
redirect_to "http://my_app.com{request.fullpath.gsub('/blog','')}", :status => :moved_permanently
end
我的 WP .htaccess 文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
【问题讨论】:
标签: ruby-on-rails ruby wordpress heroku