Я создаю приложение rails, которое я буду размещать на Heroku на domain.com. И я бы хотел использовать WordPress для блога, размещенного на phpfog, но я не хочу использовать подобный поддомен, например blog.domain.com. Вместо этого я предпочитаю использовать подкаталог, например domain.com/blog
Не о SEO... Я просто не поклонник субдоменов. Подкаталоги более сексуальны (да... я на самом деле сказал это).
Любая идея о том, как я могу это сделать? Заранее спасибо за помощь.
Вы можете использовать стойку-реверс-прокси-камень, который, по мнению Neezer, сделал это. Сначала вам нужно добавить gem "rack-reverse-proxy", :require => "rack/reverse_proxy"
в свой Gemfile и запустить bundle install
. Затем вы измените свой config.ru
, чтобы перенаправить маршрут /blog/
в нужный блог:
require ::File.expand_path('../config/environment', __FILE__)
use Rack::ReverseProxy do
reverse_proxy /^\/blog(\/.*)$/, 'http://notch.tumblr.com$1', opts={:preserve_host => true}
end
run YourAppName::Application
Вероятно, у вас уже есть первая инструкция require и оператор run YourAppName...
. Есть пара важных деталей, которые делают эту работу.
Во-первых, когда вы добавляете нужный URL-адрес блога, вы не можете удерживать конечную косую черту. Если вы это сделаете, когда кто-то запросит http://yourdomain.com/blog/
, жемчуг отправит их на http://you.yourbloghost.com//
с дополнительной косой чертой.
Во-вторых, если параметр :preserve_host
не включен, ваш сервер хостинга блога будет считать запрос как http://yourdomain.com/blog/
вместо http://you.yourbloghost.com
и будет возвращать плохие результаты.
У вас все еще может быть проблема с CSS или изображениями, если в блоге используется /absolute/paths/to/images/
.
Я бы сказал, что лучше всего попытаться сделать обратный прокси с промежуточным ПО Rack (сродни Apache mod_proxy
).
Быстрый поиск Google показал этот драгоценный камень (https://github.com/jaswope/rack-reverse-proxy), но автор упоминает, что он, вероятно, не готов к производству. Наличие прокси-сервера промежуточного программного обеспечения должно позволить вам переадресовать ваш поддомен yourdomain.com/blog
на другой веб-сайт your-phpfog-account.com/wordpress-installation
.
Насколько я могу судить, вы не можете получить доступ к конфигурационному файлу Apache с помощью heroku, если бы вы могли использовать правило Rewrite.
Если вы решите не использовать герою, вы всегда можете делать то, что я подробно расскажу ниже. Однако, если вы не используете герою, вы можете так же легко извлечь Wordpress в папку /public/rails и еще раз использовать правило перезаписи для получить apache для обработки запросов блога.
В вашей конфигурации apache вам нужно будет добавить.
RewriteRule ^/blog/?(.*)$ http://somedomain.com/~user/blog/$1 [P,NC,QSA,L]
Он перенаправляет все запросы в/blog/на другой сервер.
Источник: http://www.igvita.com/2007/07/04/integrating-wordpress-and-rails/
another-domain.com/blog
вместо original-domain.com/blog
.
В дополнение к jplewickeless 'answer, я закончил писать пользовательскую Rack middelware, чтобы заменить абсолютные URL-адреса и другие пути на стороне обратного прокси. Это руководство поможет вам начать: