ruby-on-rails – 将WordPress博客路由到Rails子文件夹 – 博客链接未更改

我目前有一个Rails应用程序,my_app.com和一个相关的Wordpress博客,blog.my_app.com.它们都是在Heroku上独立运行的(即没有Apache或Nginx脚本)

我正在尝试将博客移动到Rails应用程序的子文件夹my_app.com/blog中,而不会丢失任何博客现有的SEO’果汁’.

我已经实现了机架反向代理宝石,博客的主页尽职尽责地出现在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/")

在我的ApplicationController中:

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>

最佳答案 听起来您需要做的就是更新WordPress站点中的URL以使用新方案.最简单的方法是在数据库中执行搜索和替换:

Search: blog.my_app.com
Replace: my_app.com/blog

但有一点需要注意. WordPress将大量序列化数据存储在数据库中.序列化字符串具有定义的长度,因此只更改字符串而不更新长度将导致问题.

我喜欢使用this utility来更新WordPress中的链接.它将对数据库执行搜索和替换,并将正确更新序列化数据.如果出现问题,请确保备份数据库.

点赞