Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Поддомен как переменная GET
 
 автор: tvv123456   (08.04.2012 в 14:07)   письмо автору
 
 

Доброго времени суток.
Подскажите как сделать такое:
Пользователь видит в адресной строке браузера login.mysite.ru
А веб сервер это воспринимает как mysite.ru?ref=login

  Ответить  
 
 автор: Sfinks   (08.04.2012 в 14:36)   письмо автору
 
   для: tvv123456   (08.04.2012 в 14:07)
 

Нужно сперва настроить соответствующим образом DNS, чтоб при вводе login.site.ru клиент на самом деле попадал на site.ru. Для этого можно как "CNAME" записи использовать, так и "А".
А потом в .htaccess корневого сайта с помощью mod_rewrite делать разбор по %{HTTP_HOST} и редиректить внутренним редиректом в нужное место.

  Ответить  
 
 автор: tvv123456   (08.04.2012 в 14:41)   письмо автору
 
   для: 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, но опять же не знаю как.

  Ответить  
 
 автор: Sfinks   (08.04.2012 в 14:55)   письмо автору
 
   для: 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. Сперва поинтересуйтесь сделает ли это для вас саппорт хостинга. Я сомневаюсь.

  Ответить  
 
 автор: tvv123456   (08.04.2012 в 15:04)   письмо автору
 
   для: Sfinks   (08.04.2012 в 14:55)
 

Да заказчику нужно обязательно. НА многих сайтах так сделано:
реферальная ссылка у каждого пользователя вида login.site.ru, я кобы пользователи стесняються заходить по реф ссыкам вида site.ru?ref=login
Я так понял если у меня есть зарегистрированный домен site.ru, то днс сервера будут направялть меня по тому же адресу если я введу q.site.ru? и тут уже нужно просто граммотно настроить апаче?

  Ответить  
 
 автор: tvv123456   (08.04.2012 в 15:43)   письмо автору
 
   для: Sfinks   (08.04.2012 в 14:55)
 

а с чего вы взяли, что я не знаю что это нужно httpd.conf добавлять(virtualhost)

  Ответить  
 
 автор: Sfinks   (09.04.2012 в 02:12)   письмо автору
 
   для: 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. Отпишитесь, плиз, если получится, чтобы принять на вооружение.

  Ответить  
 
 автор: tvv123456   (09.04.2012 в 21:30)   письмо автору
 
   для: 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 прописать.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования