Виртуальные субдомены через .htaccess. Как реализовать переадресацию?
Здравствуйте. Вопрос к знатокам: как реализовать переадресацию через .htaccess чтобы при вводе в адресной строке gorod.site.ru была переадресация на site.ru/?city=gorod? Уже многое перепробовал но на денвере не выходит.
RewriteCond %{HTTP_HOST} ^gorod.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/?city=gorod?/$1 [R=301,L]
Могу ошибаться, но попробуй
И сделал так:
1) Настроил А-запись с любыми поддоменами (*.site.ru) на IP сервера. Далее, не забыть настроить всё на сервере, чтобы *.site.ru вёл на 1 проект
2) В htaccess прописал:
AddDefaultCharset utf-8
RewriteEngine On
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.(.+)\.(com|ru)$
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?alias=$1 [QSA,L]
3) И таким образом получал всегда 2 параметра:
- $_SERVER['HTTP_HOST'] - т.е. сам домен (gorod.site.ru)
- $_REQUEST['alias'] - т.е. УРЛ страницы с контентом (some_info)
4) Если используется одна БД, то далее, может возникнуть проблема, что на теоретических страницах сайтов gorod1.site.ru/some_info и gorod2.site.ru/some_info будет отображаться одна и та же страница - "some_info".
Чтобы этого не произошло, я храню домены в таблице БД: "gorod1.site.ru" - у которого есть свой id (например domain_id). И каждую страницу сайта, я тоже храню в таблице БД, у которой есть поля с контентом, УРЛ - т.е. alias и parent - т.е. наш domain_id.
И получается, что каждая страница конкретного сайта будет явно определена по alias и domain_id - т.е. gorod1.site.ru/alias
5)
Плюсы:
- возможность создания любого числа поддоменов и страниц к ним
Минусы:
- УРЛ страницы при такой схеме имеет только 1 уровень т.е. subdomain.site.ru/livel
- при большом объёме данных, сайт начинает тормозить, но это частично решается путём введения индексов в БД
RewriteCond %{REQUEST_URI} /index.php <--- здесь возможно подправить нужно
RewriteRule ^(.*)$ http://site.ru/?city=gorod? [R=301,L]
Но возникла проблема с ошибкой 500. Подскажите кто знает как подправить файл htaccess?
DirectoryIndex switch.php index.php
Options -Indexes
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/index$ [OR]
RewriteCond %{REQUEST_URI} ^/index[.]+(\w+)$
RewriteRule . / [R=301,L]
# Список папок к которым следует пропускать запросы напрямую
RewriteCond %{REQUEST_URI} ^/(test|i|css|inc|images|fonts)/.*
RewriteRule . - [L]
# Аналогичный список файлов
RewriteCond %{REQUEST_URI} ^/(yml.php|left_menu.php|(.*)json|(.*)jpg|(.*)php1|(.*)gif|(.*)png|(.*)js|(.*)pdf)$
RewriteRule . - [L]
# Остальное считается запросом страницы и перехватывается
RewriteRule (.*) switch.php [L]
Проблема в последней, как исправить?