[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать переадресацию с поддомена на домен?
anon1m
Здравствуйте.
Можно ли при помощи mod_rewrite сделать так, чтобы при обращении, например, к поддомену http://s.site.ru происходило обращение к http://site.ru/script.php?mode=simple ?



Спустя 5 минут, 45 секунд (14.12.2010 - 23:43) quickxyan написал(а):
пишешь в файле index.php редирект на другой урл

например:


<?php
header('Location: http://site.ru/script.php?mode=simple');
exit;
?>

Спустя 37 минут, 27 секунд (15.12.2010 - 00:21) anon1m написал(а):
Данный вариант меня не совсем устраивает. Необходимо, чтобы адрес преобразовывался на сервере, а в адресной строке браузера по-прежнему остался адрес http://s.site.ru

Спустя 1 час, 30 минут, 38 секунд (15.12.2010 - 01:51) anon1m написал(а):
Нашёл такое решение:

RewriteCond %{REMOTE_HOST} ^s\.site\.ru$
RewriteRule ^s\.site\.ru$ http://www.site.ru/script.php?mode=simple [R,L,QSA]

Для того, чтобы этот способ работал, необходимо при помощи DNS сделать s.site.ru псевдонимом для site.ru. А как создать псевдоним? Стоит панель cpanel


Спустя 20 часов, 39 минут, 36 секунд (15.12.2010 - 22:31) anon1m написал(а):
Вобщем, вот решение:
1. Необходимо добавить в DNS запись формата A вида *.site.ru
2. Необходимо сделать *.site.ru алиасом для site.ru. Для этого необходимо в httpd.conf добавить алиас *.site.ru
<VirtualHost site.ru:80>
DocumentRoot /path/to/dir/site.ru
ServerName site.ru
ServerAlias *.site.ru
</VirtualHost>
3. В .htaccess, например, для создания поддомена forum.site.ru, необходимо прописать следующее:
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^forum\.site\.ru$ [NC]
RewriteCond %{REQUEST_URI} !/forum/
RewriteRule ^(.*)$ /forum/$1 [L]

Все остальные поддомены будут отображать страницу site.ru. При необходимости, можно вернуть 403 ошибку.

Это универсальный способ, для создания большого числа поддоменов. Можно было создать отдельный домен и сделать его алиасом для основного, остальное аналогично.

И у меня ещё один вопрос возник. Почему, если в .htaccess пропустить строку RewriteCond %{REQUEST_URI} !/forum/, сервер выдаёт ошибку 500? Потому что происходит переадресация, правила, прописанные в .htaccess выполняются заново и происходит зацикливание?


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.