Перенаправить папку на поддомен - PullRequest
0 голосов
/ 08 февраля 2012

Я хочу иметь 2 приложения Ruby on Rails в домене.

Первый работает на example.com; Я сделал это с .htaccess (с RewriteRule на example.com:12001)

Я хочу, чтобы другой находился в поддомене, например blog.example.com. Итак, я создал поддомен, и в файле .htaccess я перенаправляю на example.com:12002.

Все работает нормально, но если я перехожу по адресу example.com/blog, меня не перенаправляют, и я вижу в браузере содержимое папки блога в public_html:

Index of /blog

    Parent Directory

Я хотел бы перейти ко второму приложению (blog.example.com), когда URL-адрес example.com/blog. Как я мог это сделать?

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Прежде всего, вы должны заменить http://blog.example.com/whatever_or_empty на http://www.example.com/blog/whatever_or_empty в ваших HTML-ссылках.

blog.example.com, хотя поддомен, это другой URL.т.е. когда RewriteRule выполняет перезапись на другой URL, произойдет внешнее перенаправление.Это будет отражено в браузере.Быть временным redirect(302(the default)) или permanent redirect(301).

Таким образом, использование перезаписи URL для изменения ссылки http://blog.example.com/ на http://www.example.com/blog/ бесполезно.


Хотя вы можете достичьэто с использованием Apache Module mod_proxy .

Модули прокси-сервера Apache имеют следующие параметры:

  • mod_proxy: основной модуль занимается инфраструктурой и настройкой прокси-сервера и управляет запросом прокси.
  • mod_proxy_http:Это обрабатывает выборку документов с HTTP и HTTPS.
  • mod_proxy_ftp: Это обрабатывает выборку документов с FTP.
  • mod_proxy_connect: Это обрабатывает метод CONNECT для безопасного (SSL) туннелирования.
  • mod_proxy_ajp: это обрабатывает протокол AJP для Tomcat и аналогичных внутренних серверов.
  • mod_proxy_balancer реализует кластеризацию и распределение нагрузки по нескольким внутренним серверам.
  • mod_cache, mod_disk_cache, mod_mem_cache: они связаны с управлением кешем документов,Для включения кэширования требуется mod_cache и один или оба из disk_cache и mem_cache.
  • mod_proxy_html: переписывает HTML-ссылки в адресное пространство прокси.
  • mod_xml2enc: поддерживает интернационализацию (i18n) от имени mod_proxy_htmlи другие модули фильтрации разметки.пробел.
  • mod_headers: изменяет заголовки HTTP-запросов и ответов.
  • mod_deflate: согласовывает сжатие с клиентами и бэкэндами.

Вам нужнопо крайней мере mod_proxy и mod_proxy_http модули включены для работы прокси:

у вас должны быть строки, подобные этим в файле conf вашего апача:

LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_module modules/mod_proxy.so

используйте этов вашем Virtualhost из http://www.example.com

ProxyPass /blog http://blog.example.com
ProxyPassReverse /blog http://blog.example.com
ProxyRequests On
ProxyVia On

<Proxy *>
Order allow,deny
Allow from all
</Proxy>

Определения:


Вы также можете использовать кэш с mod_cache: mod_cache.
Подробнее о кэшировании см. Здесь: mod_cache Документы Apache .


Также отключите индексы просмотров индекса, установив этот параметр.:

options -indexes

Добавить index в папку blog.

0 голосов
/ 08 февраля 2012

решение зависит от того, как ваш хостинг-провайдер реализует сопоставление нескольких поддоменов.Некоторые предлагают панель управления, чтобы вы могли зарегистрировать свои субдомены и указать каждый на отдельный подкаталог в своем файловом пространстве.Некоторые просто отобразят *.yourdomain.zzz в корневой каталог документа для yourdomain.zzz, и из вашего описания это то, что происходит для вас.В этом случае вам необходимо декодировать переменную HTTP_HOST и направить ее туда.Но вам также нужно остановить цикл перезаписи правил, чтобы sub1.yourdomain.zzz не отображался в yourDocRoot / sub1 / sub1 / sub1 ... `

Если вы хотите обработать sub1 и sub2 поддоменов, тогда вы бы сделали это с правилом на верхнем уровне, например:

RewriteBase  /
RewriteCond  %{ENV:REDIRECT_INSUB} !=1
RewriteCond  %{HTTP_HOST}          (sub1|sub2)\.yourdomain\.zzz
ReweriteRule ^(.*)                 %1/$1         [L,E=INSUB:1]

Поиск [. htaccess] HTTP_HOST для просмотра лотоввариантов этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...