Можно ли при помощи 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
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 выполняются заново и происходит зацикливание?
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 выполняются заново и происходит зацикливание?