SEO Сообщество: Спрашивайте и помогайте

Присоединяйтесь к сообществу профессиональных веб-мастеров PR-CY, отвечайте на вопросы коллег и задавайте свои.

Q&A SEO

Виртуальные субдомены через .htaccess. Как реализовать переадресацию?

me4dy me4dy  
0
  17.08.2016 16:43       1 998    
Здравствуйте.  Вопрос к знатокам: как реализовать переадресацию через .htaccess чтобы при вводе в адресной строке gorod.site.ru была переадресация на site.ru/?city=gorod? Уже многое перепробовал но на денвере не выходит.

Ответы на пост (5) Написать ответ
juvus juvus
1
17.08.2016 23:25
# 301 redirect to page
RewriteCond %{HTTP_HOST} ^gorod.site\.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/?city=gorod?/$1 [R=301,L]

Могу ошибаться, но попробуй
0
all-bz all-bz
13
17.08.2016 23:31
Я тоже подобную тему делал, но в процессе столкнулся с множеством проблем, одной из которых была передача дополнительных параметров (кроме имени субдомена) и переадресацией.

И сделал так:
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
- при большом объёме данных, сайт начинает тормозить, но это частично решается путём введения индексов в БД
1
all-bz all-bz
13
17.08.2016 23:34
Возможно я неправильно понял задачу)) Если переадресация, то - то как я написал. Если просто редиректы - то, как Dmitry Safonov ))
0
turbobit777 turbobit777
1
18.08.2016 00:59
вот попробуй у меня работает
RewriteCond %{REQUEST_URI} /index.php <--- здесь возможно подправить нужно
RewriteRule ^(.*)$ http://site.ru/?city=gorod? [R=301,L]
0
me4dy me4dy
0
19.08.2016 07:52
Все спасибо за советы, вопрос решился настройками у хостера переадресацией subdomen.site.ru ---> site.ru/subdomen.
Но возникла проблема с ошибкой 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]


Проблема в последней, как исправить?
0