Субдобены, что не так?

seomazzi
На сайте с 19.02.2009
Offline
15
713

Задача сделать субдомены имея доступ только к .htaccess

Т.е. что бы sub1.site.ru отдавал все то что лежит в sub1

1. Сделал что бы все сайты типа *.site.ru отвечали по ip site.ru

2. Начал ковырять .htaccess

3. Добавляю

RewriteEngine on

RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$
RewriteRule ^(.*)$ %1/test.html

Теперь все страницы мне отдаются как test.html - т.е. все OK!

4. Меняю последнюю строчку на

RewriteRule ^(.*)$ %1/$1 

Получаю 500.

Какого фига не работает подстановка $1?

XL
На сайте с 16.01.2006
Offline
26
xAL
#1

У меня заработал такой вариант:


RewriteEngine on

RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule .* - [L]

RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$
RewriteRule ^(.*)$ %1/$1
seomazzi
На сайте с 19.02.2009
Offline
15
#2
xAL:
У меня заработал такой вариант:

Ура. Все заработало!!!

Спасибо!

Теперь осталось вкурить почему именно так :)

XL
На сайте с 16.01.2006
Offline
26
xAL
#3

Строка, которую я добавил, исключает бесконечные циклы.

В твоем запросе, немного с ним поигравшись, я нашел именно бесконечный цикл — обработанный запрос снова попадает под условие «RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$», т.к. хост не изменился, а других условий нет.

Чтобы разорвать бесконечный цикл нужно либо использовать этот финт, либо добавить еще какое специфичное условие, которое его разорвет.

xAL добавил 29.07.2009 в 14:40

Обычно в условиях есть вот такие строки:


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Они тоже исключают бесконечные циклы, т.к. обычно RewriteRule ссылается на существующий файл/скрипт.

Boris A Dolgov
На сайте с 04.07.2007
Offline
215
#4

А если сделать так:

RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$

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

?

С уважением, Борис Долгов. Администрирование, дешевые лицензии ISPsystem, Parallels, cPanel, DirectAdmin, скины, SSL - ISPlicense.ru (http://www.isplicense.ru/?from=4926)
XL
На сайте с 16.01.2006
Offline
26
xAL
#5
Boris A Dolgov:
А если сделать так:
RewriteCond %{HTTP_HOST} ^(.+)\.site\.ru$
RewriteRule ^(.*)$ %1/$1 [L]
?

[L], к сожалению, от повторного rewrite не спас. Попробовал: та же 500 ошибка, если руками не прекращать рекурсию.

M
На сайте с 01.04.2004
Offline
125
#6

xAL, гениально!!! Огромное спасибо! Я уже настолько запарился в решении мой проблемы, что просто отчаялся.

тоже надо было сабы приделать. все получилось, кроме того, что шло зацикливание из-за обращение "/some.php", а убрать слэш никак не получалось - именно тогда могло бы заработать. Перерыл кучу мануалов, причем на EN сайтах...

а тут такое чудесное решение. респект :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий