Использование .htaccess для перенаправления всех запросов с субдомена на основной домен - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть хобби-сайт для ряда различных проектов, и я хочу, чтобы у каждого проекта был свой собственный поддомен, например, foo.domain.com, bar.domain.com и т. Д.

Я использую Drupal с доменомМодуль доступа, означающий, что все субдомены должны указывать на базовую установку Drupal, а затем модуль распознает, с какого субдомена поступает запрос, и обслуживает страницу в соответствии с этим.

Теперь, поскольку это просто хобби-проект, я держу его на бесплатной учетной записи общего хостинга, что означает несколько ограничений:

  • Нет подстановочных субдоменов.
  • Каждый поддомен связан с подкаталогом с тем же именем, например, domain.com переходит в / public_html /, а sub.domain.com переходит в / public_html / sub / Хостинг заставляет это.
  • Я не могу создавать символические ссылки.
  • У меня ограниченное пространство и базы данных, то есть я не могу просто сделать новую установку для каждого проекта.(Отсюда и модуль доступа к домену)
  • Мой регистратор доменов (Godaddy) плохо работает с общим хостингом.Я попытался разместить у них DNS и сделать подстановочную запись A на моем хост-сервере, но это не сработало, и Godaddy почему-то не разрешает подстановочные записи CNAME ...

ItКажется, единственная оставленная мне опция - это магия .htaccess.
Мне нужен файл .htaccess, чтобы поместить его в директорию поддоменов (и), чтобы сообщить apache:

  1. Данные находятся вкорневой веб-каталог
  2. Чтобы ничего не изменять, чтобы модуль Drupal знал, какой поддомен был запрошен, а пользователь все еще видит «sub.domain.com» в окне браузера.

Благодарю за помощь!

TL; DR
Как я могу сказать Apache использовать данные из другого каталога (то есть / public_html / вместо / public_html / subdomain /) БЕЗ перенаправления или каких-либо измененийк заголовкам?HTTP_HOST должен быть целым.
Спасибо!

Ответы [ 3 ]

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

попробуйте

RewriteEngine On
RewriteCond %{HTTP_HOST} !^example\.com$ [NC]
RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [R=301,L]
0 голосов
/ 07 февраля 2012

попробуйте это.

RewriteEngine On
RewriteCond %{HTTP_HOST} sub\.example\.com$ [NC]
RewriteRule ^sub/(.*)$ $1 [L]

Не уверен, что это будет работать, потому что я не знаю, как ваш хост настроен на сервер для сопоставления поддоменов с другой папкой.

В противном случаеВы можете попробовать флаг Proxy, но это не установит правильную переменную http_host в php.

Вы уверены, что у Drupal нет другого метода для выполнения нескольких установок.Я знаю, что WP имел возможность использовать префикс для всех имен таблиц, чтобы несколько установок могли сосуществовать, используя одну и ту же базу данных, если они используют разные префиксы.Не уверен, насколько велика установка Drupal и сколько дискового пространства предоставляет ваш хост.

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