Конфликт инструкций .htaccess «Изменение DocumentRoot» + «всегда отображать поддомен» - PullRequest
1 голос
/ 15 декабря 2010

У меня есть переписать, который меняет мой DocumentRoot с /public_html на /public_html/MAIN, и он прекрасно работает.

RewriteRule ^$ /MAIN/ [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/MAIN/
RewriteRule ^(.*)$ /MAIN/$1

Теперь Если я пытаюсь добавить следующую инструкцию, чтобы всегда показывать поддомен wwwбольше не работает должным образом ...

RewriteCond %{http_host} ^domain.com [nc]  
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

Посещение http://domain.com/ вызывает перезапись на http://www.domain.com/MAIN/, что не то, что я хочу. Я не хочу, чтобы подкаталог MAIN был виден.

Чего мне не хватает?

1 Ответ

3 голосов
/ 15 декабря 2010

Шаблон ^(.*)$ фиксирует текущий URI, независимо от того, находится он в строке адреса или является внутренним перенаправлением.Должно работать одно из этих решений:

  • Поместить перенаправление поддоменов первым
  • Заменить $1 на переменную, например %{REQUEST_URI}
...