И снова эти сабдомены...

Fuz

Новичок
И снова эти сабдомены...

Есть некая доска объявлений, которая должна охватывать всю Россию с сортировкой по регионам. Планируется создать сабдомены, например, 23.board.ru - где будут отображаться только объявления Краснодарского края.
Схема работы:
Пользователь заходит на 23.bord.ru и его перекидывает на ссылку www.bord.ru?region=23
Всё отлично, но в строке адреса адрес изменяется с 23.bord.ru на www.bord.ru?region=23. Как этого избежать?
 

whirlwind

TDD infected, paranoid
> его перекидывает на ссылку

> в строке адреса адрес изменяется с 23.bord.ru на www.bord.ru?region=23. Как этого избежать?

А что Вы хотели что бы там отображалось? Имя Вашей девушки?
 

Fuz

Новичок
whirlwind хотели чтоб оставалось 23.bord.ru - если не знаешь как сделать, чего остришь?

-~{}~ 14.12.05 12:02:

Loshadka я догадывался, что MOD_REWRITE, а каким должно быть правило, чтобы в случае если введено 23.bord.ru перекидывало на bord.ru?... и в строке оставалось 23.bord.ru
 

whirlwind

TDD infected, paranoid
> хотели чтоб оставалось 23.bord.ru

Ну а зачем тогда перебрасывали? Что трудно в скрипте разобрать доменное имя?

-~{}~ 14.12.05 12:04:

> каким должно быть правило
В Вашем случае никаким, т.к. модреврайт не может изменить адресную строку в браузере. Он только может перекинуть обратно на 23.board.ru
 

Fuz

Новичок
whirlwind - разобрать имя не трудно. что сделать дальше?..ведь всё равно надо редиректить на главную страницу.

-~{}~ 14.12.05 12:07:

>В Вашем случае никаким...
Тогда есть ли выход?..зачем ходить кругами, если можно сразу описать алгоритм. Разобрали доменное имя..след.шаг?
 

whirlwind

TDD infected, paranoid
если

> надо редиректить

то ничего не сделать. Но так ли надо редиректить? Работа наверное ведется с БД, или с несколькими БД. Вот от этого и сплясать. А код, код у Вас будет в одном экземпляре. Выделите общий код в отдельний инклюд.

PS. И вообще я бы прописал все регионы алиасами в конфиге и без всяких модреврайтов все бы работало. Был бы единственный документрут для всех регионов. Подумайте над этим.
 
whirlwind
>В Вашем случае никаким
прочитай еще раз внимательно вопрос...

Fuz
читай внимательно, в этой статье все очень хорошо написано.
вот еще примеры
 

whirlwind

TDD infected, paranoid
А что собственно непонятно? Вам нужно получить примерно

$reg = $_GET['region']

Ну так найдите $reg путем разбора доменного имени.
 

Fuz

Новичок
whirlwind
ок. документрут для всех регионов один. Как реализовать этот механизм с альясами?..я так понимаю надо .htaccess редактировать?
 
whirlwind
ты не в теме...

читай вопрос человека!

-~{}~ 14.12.05 12:12:

Fuz
читай статью! там все написано.
 

whirlwind

TDD infected, paranoid
Loshadka Повежливее выражаемся

> как реализовать этот механизм с альясами?

Самый простой, это в VirtualHost прописать

ServerAlias *.bord.ru

Но, в этом случае будут отрабатываться все третьего уровня. То есть и vasya.bord.ru, etc... Можно перечислить только те, для которых есть регионы. Т.е.

ServerName bord.ru
ServerAlias 23.bord.ru 24.bord.ru www.bord.ru
 

Fuz

Новичок
Виртуальные хосты пользователей
Описание:

Предположим — вы хотите предоставлять адреса www.username.host.domain.com для страниц пользователей через записи DNS типа A на той же самой машине и без каких либо виртуальных хостов на этой машине.
Решение:

Для запросов HTTP/1.0 решения нет, однако для запросов HTTP/1.1 которые содержат HTTP заголовок Host: мы можем использовать следующий набор правил для преобразования http://www.username.host.com/anypath во внутренний путь /home/username/anypath:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.[^.]+\.host\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^www\.([^.]+)\.host\.com(.*) /home/$1$2

-~{}~ 14.12.05 12:18:

Я так понял это моё решение. но как переделать эти правила под меня?
 

whirlwind

TDD infected, paranoid
Специально для Loshadka

Хотя можно и с модреврайтом, но эт надо делать ВМЕСТО редиректа, а не ПОСЛЕ него. И все равно это будет не очень элегантным решением.
 
whirlwind
логично, но человек привел конкретный вопрос.

з.ы. сорри за грубость (если он и была)
 

vitus

мимо проходил
Fuz
не нужны тебе эти правила, не нужен редирект, прочти что написал whirlwind
PHP:
$hostnode=explode(".", $_SERVER['HTTP_HOST']);
$region=$hostnode[0];
 

Fuz

Новичок
Вот и помирились. а теперь давайте все вместе посмотрим на пример и подумаем чего мне надо в нём изменить=)
 
vitus
до кучи. нужна еще проверка на то, что адрес вроде: *.board.ru

т.е.
1. * - существует (адрес не просто www.board.ru )
2. * - состоит не более чем из 2-х цифр
 
Сверху