将现有的 WordPress 博客作为 Rails 应用程序的子目录? [英] Make an existing WordPress blog a subdirectory of a Rails App?

查看:43
本文介绍了将现有的 WordPress 博客作为 Rails 应用程序的子目录?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在 Heroku 上有一个 Rails 应用程序,在 GoDaddy 上有一个单独的 WordPress 博客.如何将 RailsApp.com/blog 路由到 WordPress,同时将其保留为应用的子目录?

I have a Rails app on Heroku and a separate WordPress blog hosted on GoDaddy. How can I route RailsApp.com/blog to the WordPress, while maintaining it as a subdirectory of the app?

推荐答案

对于 Rails3.1+ (+Rails4),你应该遵循这些:首先,将 gem rack-proxy 添加到 Gemfile

For Rails3.1+ (+Rails4), you should follow these: First, Add gem rack-proxy to Gemfile

gem机架代理"

然后像这样将文件 proxy.rb 添加到 Rails.root/lib 中:

Then add file proxy.rb into Rails.root/lib like this:

require 'rack/proxy'
class Proxy < Rack::Proxy
  def initialize(app)
    @app = app
  end
  def call(env)
    original_host = env["HTTP_HOST"]
    rewrite_env(env)
    if env["HTTP_HOST"] != original_host
      perform_request(env)
    else
      # just regular
      @app.call(env)
    end
  end
  def rewrite_env(env)
    request = Rack::Request.new(env)
    if request.path =~ /^\/blog(\/.*)$/
      # enable these code if you set blog as ROOT directory in wordpress folder
      # env['REQUEST_PATH'] = '/'
      # env['ORIGINAL_FULLPATH'] = '/'
      # env['PATH_INFO'] = '/' # set root path request
      env['REQUEST_URI'] = 'http://tinle1201.wordpressdomain.com' # your path
      env["SERVER_PORT"] = 80
      env["HTTP_HOST"] = "tinle1201.wordpressdomain.com" # point to your host
    end
    env
  end
end*

在 config/application.rb 中注册中间件的代理:

Register proxy to middleware into config/application.rb:

require File.expand_path('../boot', __FILE__)
require 'rails/all'
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(:default, Rails.env)
module AdultSavings
  class Application < Rails::Application
    config.autoload_paths += %W(#{config.root}/lib)
    config.middleware.use "Proxy"
    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration should go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded.
    # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
    # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
    # config.time_zone = 'Central Time (US & Canada)'
    # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
    # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
    # config.i18n.default_locale = :de
  end
end*

将此行添加到 php 文件 wp-config.php 中:

Add this line into php file wp-config.php:

define('WP_HOME', 'http://tinle1201.wordpressdomain.com/blog');

这篇关于将现有的 WordPress 博客作为 Rails 应用程序的子目录?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆