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


Автор: nepster 23.5.2013, 20:16
Задача сделать на сайте личную ссылку для пользователей 
login.site.ru

какие критерии:

login.site.ru           -> редирект: site.ru/vcard/login
login.site.ru/news/  -> редирект: site.ru/news/
login.site.ru/office/ -> редирект: site.ru/office/
login.site.ru/index/ -> редирект: site.ru

Тоесть все динамические поддомены редиректят на url адреса сайта. 
Нужно, что бы только login.site.ru показывал определнный контент по адресу (site.ru/vcard/login) 
 
остальные же ссылки, это ссылки сайта, только по сайту можно путешествовать, через поддомен:
login.site.ru/news/   -> редирект: site.ru/news/
login.site.ru/office/  -> редирект: site.ru/office/
login.site.ru/test/     -> редирект: site.ru/test/
login.site.ru/reg/     -> редирект: site.ru/reg/

исключение это login.site.ru/index/ -> редирект: site.ru.
Так как на login.site.ru, у нас персональные данные клиента, и главная страница сайта не показывается, ее можно увидеть по адресу 

login.site.ru/index/ -> редирект: site.ru


Теперь в чем проблема:
я создал записи в админке хостинга:
*.site.ru

теперь любой поддомен открывает папку www/userlogin
Тоесть если мы наберем:
nepster.site.ru
vasa.site.ru
peta.site.ru
мы попадаем в www/userlogin

хорошо дальше, я прописал mod_rewrite (редирект)

Все как бы работает, за исключением одной гигантской проблемы:

Я захожу на login.site.ru и меня так  и редиректит на  site.ru/vcard/login/userlogin
в прямом смысле. 

Тоесть я надеялся на прозрачный редирект (без смны URL), а меня взяло и нагло кинуло на site.ru/vcard/login/userlogin и еще добавило не понятно от куда userlogin


Подскажите пожалуйста как сделать редирект с  login.site.ru  на site.ru/vcard/login
без смены URL.

После поиска, я так понял это нужно работать с httpd.conf!?

Автор: Arantir 23.5.2013, 20:25
Цитата(nepster @  23.5.2013,  19:16 Найти цитируемый пост)
Подскажите пожалуйста как сделать редирект с  login.site.ru  на site.ru/vcard/login
без смены URL.

Почитайте что такое редирект и поймете, что вопрос лишен смысла. Это как "как сменить url без смены url".
То, что Вы, судя по всему, хотите получить, нельзя назвать редиректом.

Зачем делать это на уровне сервера? Почему Вы не можете сделать это на уровне приложения? Например, получая адрес из $_SERVER['SERVER_NAME']. Сайт ведь все равно один и тот же...

Добавлено через 6 минут и 51 секунду
Цитата(nepster @  23.5.2013,  19:16 Найти цитируемый пост)
хорошо дальше, я прописал mod_rewrite (редирект)

Покажите пример того, что Вы там прописали. Редирект происходит когда он явно указан (например "[R=301]").

Автор: nepster 23.5.2013, 20:38
я уже перепробовал миллион примеров с гугла. Да походу все они на 301 редиректе

Код

RewriteEngine On
RewriteCond %{HTTP_HOST} ^субдомен1\.домен\.ru [NC]
RewriteRule ^(.*) http://домен.ру/index.php?id=fghfghfghfghfgh1 [R=301,L]


как пример были другие ключи [L],[QSA,L] и тп. 

любой пример который мне попадался либо не работает, либо делает перенаправление. 

Автор: Arantir 23.5.2013, 20:58
Цитата(nepster @  23.5.2013,  19:38 Найти цитируемый пост)
RewriteRule ^(.*) http://домен.ру/index.php?id=fghfghfghfghfgh1 [R=301,L]

По-моему, при указании полной ссылки (с http) редирект будет в любом случае.
Попробуйте просто:
Код

RewriteCond %{HTTP_HOST} ^[a-z]+?\.site\.ru [NC]
RewriteRule ^(.*)$ /index.php?id=foo [L]

Автор: nepster 24.5.2013, 02:40
Internal Server Error

Автор: nepster 24.5.2013, 19:06
разобрался на стороне приложения ! 

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