Как я могу использовать подкаталог вместо поддомена?

19

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

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

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

  • 0
    Я не знаю, возможно ли это, потому что вы не можете разместить WordPress под Heroku.
  • 0
    Основываясь на ответах ниже, а также небольшом количестве исследований, которые я провел, я думаю, что может быть лучше просто внедрить свой собственный небольшой движок блога rails в мое приложение. Я видел видео "Построить блог за 15 минут". Я не хочу использовать строительные леса (я мог бы сделать это без каких-либо). Мое приложение вроде как в блоге, с чего бы начать: посты, комментарии и т. Д. Мне нужно будет установить какие-то пользовательские разрешения, чтобы в блоге могли публиковать сообщения только пользователи с правами администратора.
Показать ещё 3 комментария
Теги:
heroku
subdomain
subdirectories

4 ответа

18

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

  • 0
    Как вы справляетесь с тем фактом, что Tumblr использует абсолютные URL для ссылки на контент, который включает имя хоста?
  • 0
    Крис, я боюсь, что у меня нет отличного решения для этого. Я использовал Wordpress, где вы можете вручную указать базовый путь, который он будет использовать в содержимом страницы, поэтому мне не нужно было это решать. Если вы хотите настроить исходный код для rack-reverse-proxy, вы можете изменить его так, чтобы он редактировал HTML, который возвращает Tumblr.
Показать ещё 5 комментариев
3

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

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

1

Насколько я могу судить, вы не можете получить доступ к конфигурационному файлу 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/

  • 0
    Я не думаю, что переписывание - это то, что он хочет, так как это изменит адрес в строке URL на another-domain.com/blog вместо original-domain.com/blog .
  • 0
    Ах я вижу. Я не знаком с тем, как работает mod_rewrite. Я просто занялся поиском и предположил, что будет делать то, что он хотел.
0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню