Как я могу использовать подкаталог вместо поддомена? - PullRequest
21 голосов
/ 30 мая 2011

Я создаю приложение rails, которое я буду размещать на Heroku на domain.com. И я хотел бы использовать WordPress для блога, размещенного на phpfog, но я не хочу использовать поддомен, такой как blog.domain.com. Вместо этого я бы предпочел использовать подкаталог, например domain.com/blog

Дело не в SEO ... Я просто не фанат поддоменов. Подкаталоги сексуальнее (да ... я на самом деле так сказал).

Есть идеи о том, как я могу надежно достичь этого? Заранее спасибо за помощь.

Ответы [ 4 ]

18 голосов
/ 11 ноября 2011

Вы можете использовать гем rack-reverse-proxy , который обнаружил 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/.

3 голосов
/ 31 мая 2011

Я бы сказал, что вам лучше всего попытаться создать обратный прокси-сервер с промежуточным программным обеспечением Rack (сродни Apache mod_proxy).

Быстрый поиск в Google показал этот драгоценный камень (https://github.com/jaswope/rack-reverse-proxy), но автор упоминает, что он, вероятно, не готов к производству. Наличие промежуточного прокси-сервера Rack позволит вам переадресовать свой поддомен yourdomain.com/blog на другой сайт your-phpfog-account.com/wordpress-installation.

1 голос
/ 31 мая 2011

Насколько я могу судить, вы не можете получить доступ к конфигурационному файлу Apache через heroku, если бы вы могли использовать правило перезаписи.

Если вы решите не использовать heroku, вы всегда можете сделать то, что я подробно описал ниже. Однако, если вы не используете heroku, вы также можете легко извлечь 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/

0 голосов
/ 11 сентября 2013

В дополнение к ответу jplewickeless, я закончил тем, что написал собственное промежуточное программное обеспечение Rack, чтобы заменить абсолютные URL и другие пути на стороне обратного прокси. Это руководство поможет вам начать это:

http://railscasts.com/episodes/151-rack-middleware

...