.htaccess для подкаталога Pan-Domain Pointing - PullRequest
1 голос
/ 26 июня 2011

Как сделать это с помощью htacess:

 a.domain.com -> domain.com/a
 b.domain.com -> domain.com/b
 .
 .
 .
 z.domain.com -> domain.com/z 

Я пытаюсь:

RewriteCond %{HTTP_HOST} ^(.*).domain.com$ [NC]

RewriteRule (.*) %1/$1 [L]

, но ошибка 500

Ответы [ 2 ]

1 голос
/ 26 июня 2011

Попробуйте:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$ [NC]
RewriteRule ^(.*)$ %1/$1 [L,QSA]

Возможные проблемы:

  • Вы установили линию RewriteEngine on над своим кодом?
  • Установлено mod_rewrite/ включен?
0 голосов
/ 26 июня 2011

Очень похоже на: mod_rewrite игнорирует правила в подкаталогах

К сожалению, полученные вами правила не будут работать (если быть точными: они действительно работают - URL переписан ..но затем, когда Apache видит флаг [L], он переходит к другой итерации ... где он снова перезаписывается ... и снова - вход в бесконечный цикл, который Apache должен прервать в какой-то момент).

Вы должны добавитьнекоторое условие, которое полностью нарушит итерацию.Есть несколько возможных способов сделать это (зависит от остальных ваших правил, вы можете прочитать немного больше здесь - влияние на производительность порядка правил перезаписи при использовании apache mod_rewrite ).

Я изменил правило, добавив еще 2 условия, которые заставляют его переписывать ТОЛЬКО ЕСЛИ пункт назначения СУЩЕСТВУЕТ.

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com$
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}/%1%{REQUEST_URI} -d
RewriteRule (.*) %1/$1 [L,QSA]

Итак ... как это работает.Мы будем использовать этот URL в качестве примера: http://home.domain.com/kaboom.txt.

  1. Если файл domain.com/home/kaboom.txt НЕ существует - ничего не происходит.
  2. Если такой файл существует - URL получаетвнутренне переписан на http://home.domain.com/home/kaboom.txt (полный URL).Apache переходит к следующей итерации.Там он проверяет, существует ли domain.com/home/home/kaboom.txt.Скорее всего, нет (если только у вас нет подпапок с тем же именем, что и у субдомена) и перезапись больше не происходит - задание выполнено.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...