Dan*_*ews 5 ruby wordpress ruby-on-rails heroku
我目前有一个 Rails 应用程序,my_app.com
以及一个相关的 Wordpress 博客,blog.my_app.com
。它们都在 Heroku 上独立运行(即没有 Apache 或 Nginx 脚本)
我正在尝试将博客移动到 Rails 应用程序的子文件夹中,my_app.com/blog
而不会丢失任何博客现有的 SEO 'juice'。
我已经实现了机架反向代理 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
Run Code Online (Sandbox Code Playgroud)
在我的 routes.rb 中:
constraints domain: 'blog.my_app.com' do
get '(*path)' => 'application#blog'
end
get "/blog" => redirect("/blog/")
Run Code Online (Sandbox Code Playgroud)
在我的 ApplicationController 中:
def blog
redirect_to "http://my_app.com{request.fullpath.gsub('/blog','')}", :status => :moved_permanently
end
Run Code Online (Sandbox Code Playgroud)
我的 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>
Run Code Online (Sandbox Code Playgroud)
听起来您所需要做的就是更新 WordPress 站点中的 URL 即可使用新方案。最简单的方法是在数据库中执行搜索和替换:
Search: blog.my_app.com
Replace: my_app.com/blog
Run Code Online (Sandbox Code Playgroud)
但有一点需要注意。WordPress 在数据库中存储了大量的序列化数据。序列化字符串具有定义的长度,因此仅更改字符串而不更新长度会导致问题。
我喜欢使用这个实用程序来更新 WordPress 中的链接。它将在数据库上执行搜索和替换,并将正确更新序列化数据。确保您有数据库备份,以防出现问题。
归档时间: |
|
查看次数: |
964 次 |
最近记录: |