Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > mod rewrite поддомен


Автор: Aver78 7.4.2015, 15:08
Есть домен auto.domen.ru , есть htaccess
RewriteEngine on

RewriteRule ^auto\.domen\.ru  2.html [L]

такое перенаправление не рабтает, вообще не пойму как выделить поддомен. То есть в теории все ясно, а на парвктике - не работает.
перенаправление поддоменов на домен включено, мод реврай стоит и работает.

Автор: numerovan 7.4.2015, 21:06
[L] - это команта говорит что как найдется совпадение далее прекратить обработку ... вам нужно R туда еще дописать R=permanent
[L,R=permanent]

Код

RewriteRule ^auto\.domen\.ru  /2.html [L,R=permanent]


/2.html - вот тут наверно нужно указать на какой домен редиректить
к примеру вот так:
Код

RewriteRule ^auto\.domen\.ru  http://domen.ru/2.html [L,R=permanent]


может я чет не понимаю сам, если что объясните по подробней.

Автор: Aver78 7.4.2015, 21:13
Не поленился попробовал, не помогает. К тому же 
Код

RewriteRule 1.html 2.html [L,R=permanent]

прекрасно работает

Автор: numerovan 7.4.2015, 21:18
Вы хотите чтоб с поддомена auto.domen.ru происходил редирект на другой домен domen.ru. Верно?

Автор: Aver78 7.4.2015, 21:20
Нет. Этого я могу добиться просто алиасами, и это настроено уже. Мне нужно получать-передавать имя вызванного поддомена в переменную, в итоге, но для начала я вообще не могу написать правило которое определяло бы что вызван определенный поддомен.

Автор: numerovan 7.4.2015, 21:38
Цитата

Мне нужно получать-передавать имя вызванного поддомена в переменную

и передавать его на тот же домен или на другой домен?

посмотрите решение вот тут 
http://www.nulled.cc/threads/199857/

если получится, оставьте ответ отпишитесь с решением потом сюда.

Автор: Aver78 7.4.2015, 22:30
Да, вопрос именно такой, но вот там ничего не работает из ответов, плюс сильное впечатление что написано криво. 

Автор: numerovan 8.4.2015, 11:46
и передавать его на тот же домен или на другой домен?

Автор: Aver78 8.4.2015, 13:46
Есть домен domen.ru в корне индексный файл который обрабатывает абсолютно все запросы со всех доменов.
Есть поддомен auto.domen.ru Надо преобразовывать запрос типа auto.domen.ru/11 в domen.ru/index.php?mod=auto&id=11

Нигде не могу найти нормальную документацию. В куче мест , куча примеров, и все нерабочие. Это вот как так.

Автор: numerovan 9.4.2015, 00:18
завтра попробую сделать

Автор: numerovan 9.4.2015, 22:50
вот сделал:
Код

RewriteCond %{HTTP_HOST} !^(www\.)?domen\.ru(.*)$
RewriteCond %{HTTP_HOST} ^(www\.)?([a-zA-Z0-9-]+)\.domen\.ru(.*)$
RewriteRule ^([a-zA-Z0-9-]+)\/(.*)$ http://domen.ru/index.php?mod=$1&id=$2 [L]


RewriteCond %{HTTP_HOST} !^(www\.)?domen\.ru(.*)$ - если имя домена Не равно "www.domen.ru...", в котором "www." встречается ноль или один раз
И
RewriteCond %{HTTP_HOST} ^(www\.)?([a-zA-Z0-9-]+)\.domen\.ru(.*)$ - если имя домена начинается с "www." (ноль либо один раз), после следуют симаолы один или более раз из этого набора [a-zA-Z0-9-], потом точка, домен, зона "ru" и потом любое кол-во символов

Если эти два условия совподают и так же совпадает по шаблону в RewriteRule, а именно: ([a-zA-Z0-9-]+) прямой слеш и какие-то еще символы  ... то передай все это дело на страницу http://domen.ru/index.php?mod=$1&id=$2. В $1 поставь значения из первой скобки, из строчки RewriteRule, в переменную mod (кстати сюда можно поставить еще и %2 вместо $1, там тоже лежит название поддомена). В $2 поставь значения из второй скобки, из строчки RewriteRule, в переменную id (как видно из условия (.*) - пустота либо любой символ).

вот и дело в шляпе.

Добавлено через 7 минут и 15 секунд
Я все допереть не мог: что такое %2. 
Это оказывается условие %{HTTP_HOST} которое находится во втором RewriteCond.

Автор: Aver78 10.4.2015, 08:22
Не работает. 
Цитата

Я все допереть не мог: что такое %2. 

А я все еще не совсем понимаю. %2 это из второго условия, то например вторые скобки из первого - как ? Или это порядковый номер из всех условий ?

У меня вроде бы работает - так 
Код

RewriteRule ^([a-z]+)\.domen\.ru$  index.php?d=$1 [L]

Но опять же непонятно, почему 
Код

RewriteRule ^(auto)\.domen\.ru$  index.php?d=$1 [L]

Уже ни фига не работает.
Странные здесь регулярки.

Автор: numerovan 10.4.2015, 10:33
Цитата

А я все еще не совсем понимаю. %2 это из второго условия, то например вторые скобки из первого - как ? Или это порядковый номер из всех условий ?


Код

RewriteCond %{A} !^(www\.)?domen\.ru(.*)$
RewriteCond %{B} ^(www\.)?([a-zA-Z0-9-]+)\.domen\.ru(.*)$
RewriteRule ^([a-zA-Z0-9-]+)\/(.*)$ http://domen.ru/index.php?mod=$1&id=$2 [L]


%1 = %{A}
%2 = %{B}
------------------------------------------------------------------------
если хотите, свяжитесь со мной, налажу у вас на хосте.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)