|
|
|
| Доброго времени суток.
Подскажите как сделать такое:
Пользователь видит в адресной строке браузера login.mysite.ru
А веб сервер это воспринимает как mysite.ru?ref=login | |
|
|
|
|
|
|
|
для: tvv123456
(08.04.2012 в 14:07)
| | Нужно сперва настроить соответствующим образом DNS, чтоб при вводе login.site.ru клиент на самом деле попадал на site.ru. Для этого можно как "CNAME" записи использовать, так и "А".
А потом в .htaccess корневого сайта с помощью mod_rewrite делать разбор по %{HTTP_HOST} и редиректить внутренним редиректом в нужное место. | |
|
|
|
|
|
|
|
для: Sfinks
(08.04.2012 в 14:36)
| | А можно ли пример для локальной машины где стоит денвер? Как это сделать?
И пример для linux хостинга?
или ссылочку на статью где это описано
нашел тут:
<VirtualHost *:80>
ServerName site.ru
ServerAlias *.site.ru
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([A-z0-9]+)\.
RewriteRule (.*) $1?partner=%1 [QSA]
...
</VirtualHost>
|
Но не работает. Может нужно отредактировать тут файл hosts чтобы кидал запросы на *.site.ru на 127.0.0.1, но опять же не знаю как. | |
|
|
|
|
|
|
|
для: tvv123456
(08.04.2012 в 14:41)
| | > Может нужно отредактировать тут файл hosts чтобы кидал запросы на *.site.ru на 127.0.0.1
Можно конечно. Но:
1. В файле hosts, на сколько я знаю, никаких * быть не может. Т.е. придется прописывать для каждого поддомена соответствующие редиректы.
2. Прописав это в hosts вы потеряете доступ к этим адресам в сети.
На локале я бы этого не стал прописывать. Да и реальный сервер нужно настраивать на каждый домен отдельно. В DNS тоже никаких звездочек нет. Прочитайте сперва что такое DNS. Кроме того вам очень сильно придется модифицировать .htaccess
Так что подумайте хорошенько, а надо ли оно вам. Если надо, то изучайте мод_реврайт и ДНС. Тут вы универсальными пятью строчками кода не обойдетесь.
Кроме того на реальном сервере то что вы написали <VirtualHost *:80>...</VirtualHost> нужно будет прописывать не в htaccess, а в httpd.conf. Сперва поинтересуйтесь сделает ли это для вас саппорт хостинга. Я сомневаюсь. | |
|
|
|
|
|
|
|
для: Sfinks
(08.04.2012 в 14:55)
| | Да заказчику нужно обязательно. НА многих сайтах так сделано:
реферальная ссылка у каждого пользователя вида login.site.ru, я кобы пользователи стесняються заходить по реф ссыкам вида site.ru?ref=login
Я так понял если у меня есть зарегистрированный домен site.ru, то днс сервера будут направялть меня по тому же адресу если я введу q.site.ru? и тут уже нужно просто граммотно настроить апаче? | |
|
|
|
|
|
|
|
для: Sfinks
(08.04.2012 в 14:55)
| | а с чего вы взяли, что я не знаю что это нужно httpd.conf добавлять(virtualhost) | |
|
|
|
|
|
|
|
для: tvv123456
(08.04.2012 в 15:43)
| | > а с чего вы взяли, что я не знаю что это нужно httpd.conf добавлять(virtualhost)
Я не говорил, что не знаете. Я подумал что речь идет об обычном виртуальном хостинге. Там далеко не всегда хостер пойдет на редактирование настроек апача под одного конкретного клиента. Если у вас доступ есть, то без проблем.
> Я так понял если у меня есть зарегистрированный домен site.ru, то днс сервера будут
> направялть меня по тому же адресу если я введу q.site.ru
Первый раз о таком слышу. Если это действительно так, то вы правы, а я усложняю ) Но я в этом не уверен.
Попробуйте тогда ваш код поправить так:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName site.ru
ServerAlias *.site.ru
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([A-z0-9]+)\.site\.ru$
RewriteRule (.*) $1?partner=%1 [L,QSA]
...
</VirtualHost>
| Только это будет только на реальном сервере с реальными ДНС работать. На локале каждый поддомен нужно прописывать в hosts.
P.S. Отпишитесь, плиз, если получится, чтобы принять на вооружение. | |
|
|
|
|
|
|
|
для: Sfinks
(09.04.2012 в 02:12)
| | Вообщем кому будет интересно:
Написал в службу поддержки своего хоста:
Здравствуйте.
Можно ли на вашем linux сервере организовать следующее:
пользователи регистрируются на сайте site.ru
Им выдаются рефссылка вида: login.site.ru
А веб сервером запрос должен восприниматься в таком виде: site.ru?ref=login
То есть в httpd.conf веб-сервера нужно добавить примерно следующее:
<VirtualHost *:80>
ServerName site.ru
ServerAlias *.site.ru
RewriteEngine On
RewriteCond %{HTTP_HOST} ^([A-z0-9]+)\.site\.ru$
RewriteRule (.*) $1?partner=%1 [L,QSA]
</VirtualHost>
Смогу ли я получить такой функционал НЕ на выделенном хостинге?
|
Ответ хостера:
Эту задачу можно реализовать только с виртуальным выделенным сервером.
|
С ДНС я поэксперементировал. То есть для своего сайта посоздавал рандомные поддомены третьего уровня. Все запросы браузера перенаправлялись на мой хост, который в свою очередь уже выдавал ошибку о том что не существует соответсвенной директории к кторой пытается обратиться браузер. То есть до сервака запросы дойдут.
Ну, а на выделенном серваке можно менять настройки апача, то есть собственно то что и ответил хостер. | |
|
|
|
|
автор: Sfinks80 (09.04.2012 в 22:09) |
|
|
для: tvv123456
(09.04.2012 в 21:30)
| | Ну я про это и говорил. На VDS вам настроят что угодно, а на хостинге нет. | |
|
|
|
|
автор: Sfinks80 (09.04.2012 в 22:12) |
|
|
для: tvv123456
(09.04.2012 в 21:30)
| | Собственно вся загвоздка в строке ServerAlias. VirtualHost и так есть, а мод-реврайт можно и в htaccess прописать. | |
|
|
|