Как создать много поддоменов?

Lu_den
На сайте с 12.02.2011
Offline
105
2873

Планирую создать большой проект, каждому городу в РФ от 100 000 жителей - свой поддомен? Притом по факту работать везде будет 1 файл, просто в зависимости от поддомена будет доставать разные данные из БД. Дайте наводку, как это реализовать?

P.S. Хочу сделать на виртуальном хостинге: трафика в нише не так много, нагрузка будет небольшая.

Важные сайты держу на этом хостинге (http://beget.ru/?id=6186). Месяц бесплатного теста. SEO-дзен: сокровища оптимизаторской мудрости (http://alexeytrudov.com/seo-zen/).
VulkanPartner
На сайте с 27.03.2014
Offline
91
#1
Lu_den:
Планирую создать большой проект, каждому городу в РФ от 100 000 жителей - свой поддомен? Притом по факту работать везде будет 1 файл, просто в зависимости от поддомена будет доставать разные данные из БД. Дайте наводку, как это реализовать?
P.S. Хочу сделать на виртуальном хостинге: трафика в нише не так много, нагрузка будет небольшая.

Проще всего через PHP это и разруливать. В htaccess прописываете правила, где все поддомены редиректятся, например на index.php. То есть когда юзеры будут открывать сайт samara.domain.com

то htaccess направит запрос на domain.com/index.php?city=samara

А в самом index.php уже в зависимости от гет параметра city делать выборку из БД и т.д.

https://perestroika.team/ru/ (https://perestroika.team/ru/) Perestroika Affiliates- ведущая гемблинг-партнерка. RevShare - до 60%. CPA - до 150$.
Lu_den
На сайте с 12.02.2011
Offline
105
#2

VulkanPartner, смысл в том, чтобы поддомены реально существовали; для каждого города - свой. Такая стурктура лучше всего отвечает задачам SEO.

PR
На сайте с 30.12.2007
Offline
93
#3

Они и будет существовать. Прописываете алиас * для своего домена в панели управления хостинга и все, дальше дело за роутингом в CMS.

Lu_den
На сайте с 12.02.2011
Offline
105
#4

PROGRAMMATOR, спасибо, сначала не разобрался, всегда использовал htaccess только для редиректа (ЧПУ).

Где можно про это подробнее почитать?

Это у любого хостера можно реализовать?

Z
На сайте с 17.09.2010
Offline
34
#5

примерно так:

1) В настройках днс создаете запись типа A *.mysite.ru

2) Добавляете ServerAlias *.mysite.ru в секцю виртуал хоста в conf апача

Должно выглядеть примерно так:

<VirtualHost *:80>

DocumentRoot "/mysite.ru/www"

ServerName mysite.ru

ServerAlias *.mysite.ru

</VirtualHost>

3) Непосретсвенно в .htaccess

RewriteCond %{REQUEST_FILENAME} -f

RewriteRule . - [L]

RewriteCond %{HTTP_HOST} ^([^\.]+)\.mysite\.ru$ [NC]

RewriteCond %{HTTP_HOST} !^www\.mysite\.ru$ [NC]

RewriteRule ^(.*)$ index.php?subdomain=%1 [L,QSA]

R
На сайте с 18.12.2009
Offline
92
#6

А в коде Вы уже можете разбирать домен, например:


$array = explode('.', $_SERVER['HTTP_HOST']);
if(count($array) == 3) {
// значит обращаются по поддомену, где $array[0] его имя
}
K
На сайте с 08.04.2010
Offline
89
#7

Комрады. подскажите, что не так?

RewriteEngine On

RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$

RewriteRule ^([^\.]*)$ script1.php?param1=%1 [L]
RewriteRule ^([^/]*).html$ script2.php?param1=%1&param2=$1 [L]
RewriteRule ^([^/]*)/([0-9]*)-([a-z0-9_-]*).html$ script3.php?param1=%1&param2=$1&param3=$2&param4=$3 [L]

Почему поддомен в первом правиле передается, а в остальных нет?

J
На сайте с 20.02.2014
Offline
120
jkm
#8
Kasperaitus:
Почему поддомен в первом правиле передается, а в остальных нет?

Для каждого RewriteRule нужен свой набор RewriteCond


RewriteEngine On

RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$
RewriteRule ^([^\.]*)$ script1.php?param1=%1 [L]

RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$
RewriteRule ^([^/]*).html$ script2.php?param1=%1&param2=$1 [L]

RewriteCond %{HTTP_HOST} ^([^\.]+)\.site\.ru$
RewriteRule ^([^/]*)/([0-9]*)-([a-z0-9_-]*).html$ script3.php?param1=%1&param2=$1&param3=$2&param4=$3 [L]
I
На сайте с 28.03.2011
Offline
37
#9
jkm:
Для каждого RewriteRule нужен свой набор RewriteCond

Необязательно. Можно сохранить результат условия в окружение и использовать его потом в правилах сколько бы их не было.

Помогаю не только словом.. (/ru/forum/830720)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий