Консультация № 182468
11.03.2011, 17:19
0.00 руб.
0 7 0
Здравствуйте! Прошу помощи в следующем вопросе:
Есть домен http://site.ru/, у домена есть файл http://site.ru/klient/index.php
Как сделать с помощью .htaccess переадресацию накого вида:

при наборе URL http://user1.site.ru/ - браузер открывал такую ссылку: http://site.ru/klient/index.php?usr=user1
при наборе URL http://vasya.site.ru/ - браузер открывал такую ссылку: http://site.ru/klient/index.php?usr=vasya

т.е. при наботе любого поддомена, имя этого поддомена передавалось странице в качестве параметра. Предварительно имя поддомена не известно, и заранее прописать DNS нет возможности. Поддоменов может быть несколько тысяч.

и еще, когда браузер откроет http://site.ru/klient/index.php?usr=user1, в адресной строке должно быть http://user1.site.ru/

Спасибо. Если не по адресу, прошу прощения

Обсуждение

Неизвестный
11.03.2011, 20:19
общий
Цитата: 173551
при наборе URL http://user1.site.ru/ - браузер открывал такую ссылку: http://site.ru/klient/index.php?usr=user1
при наборе URL http://vasya.site.ru/ - браузер открывал такую ссылку: http://site.ru/klient/index.php?usr=vasya

Это делается как-то так:
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.*)\.site\.ru$
RewriteRule ^(.*)$ /klient/index.php?usr=%1 [L]

Цитата: 173551
и еще, когда браузер откроет http://site.ru/klient/index.php?usr=user1, в адресной строке должно быть http://user1.site.ru/

Код:
<script type='text/javascript'>
if(window.location.href.match(/^http:\/\/site\.ru\/klient\/index\.php\?usr=.*$/)
window.location.href=window.location.href.replace(/.*\?usr=(.*)$/,'http://$1.site.ru');
</script>

Где-нибудь в начале страницы.
Через .htaccess у меня не получилось сделать чисто. Упорно добавляется ?usr=user1 при редиректе.
Неизвестный
12.03.2011, 04:24
общий
Спасибо, но к сожалению не работает
Sorry, "klient.locman.kz" does not exist or could not be found

По идее эта сыылка должна выдать имя поддомена - "klient"
Неизвестный
12.03.2011, 11:58
общий
Цитата: 173551
Sorry, "klient.locman.kz" does not exist or could not be found

А на dns сервере klient.locman.kz прописан или нет?
Код:
ping klient.locman.kz

работает?
И в конфиге апача надо для данного виртуального сервера прописать "ServerAlias *.locman.kz", иначе будет выдавать дефолтную страницу.
Неизвестный
12.03.2011, 14:44
общий
Цитата: 303901
А на dns сервере klient.locman.kz прописан или нет?

Я же писал : Предварительно имя поддомена не известно, и заранее прописать DNS нет возможности. Поддоменов может быть несколько тысяч.
Неизвестный
14.03.2011, 05:36
общий
Цитата: 173551
Я же писал : Предварительно имя поддомена не известно, и заранее прописать DNS нет возможности. Поддоменов может быть несколько тысяч.

Как это нельзя? У меня прописано и работает.
Так например.
Код:
$TTL	86400 
$ORIGIN locman.kz.
@ 1D IN SOA ns1.locman.kz. hostmaster.locman.kz. (
2002022401
3H
15
1w
3h
)
IN NS ns1.locman.kz.
IN NS ns2.locman.kz.

* IN A 192.168.1.10

И все запросы к поддоменам на locman.kz пойдут на 192.168.1.10 в данном случае. IP и dns нужно подставить ваши соответственно...
Апачу alias тоже нужно прописать *.locman.kz
Неизвестный
14.03.2011, 06:22
общий
Цитата: 303901
Апачу alias тоже нужно прописать *.locman.kz


В апаче прописано *.locman.kz, ping klient.locman.kz - проходит нормально, но страница не открывается (404 Not Found), хотя станица http://locman.kz/klient/index.php открывается нормально. Где ошибка?

файл .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(.*)\.locman\.kz$
RewriteRule ^(.*)$ /klient/index.php?usr=%1 [L]
DirectoryIndex index.php
AddDefaultCharset windows-1251
ErrorDocument 404 /404.php
Неизвестный
14.03.2011, 11:08
общий
Цитата: 173551
страница не открывается (404 Not Found), хотя станица http://locman.kz/klient/index.php открывается нормально

проверяйте http://klient.locman.kz/klient/index.php
если будет 404, то что-то не так с апачем
[offtop]windows-1251 лучше не надо по умолчанию. В такой зоне может быть и русский и английский и казахский... Надо utf-8.[/offtop]
Форма ответа