PHP: динамические субдомены для каждого пользователя, использующего htaccess - PullRequest
2 голосов
/ 01 сентября 2010

возможно ли создание динамических поддоменов для каждого пользователя с помощью htaccess. например, если есть пользователь с именем пользователя myusername, то добавьте для него поддомен, например htttp: //www.myusername.example.com, и когда кто-нибудь загрузит эту страницу, он должен выглядеть как http://www.example.com/?user=myusername (используя htaccess)

Ответы [ 5 ]

1 голос
/ 01 сентября 2010

Да, это возможно!

Вы можете использовать что-то вроде этого:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).example.com [NC]
RewriteRule . http://example\.com/?user=%2/ [L]
</IfModule>

Убедитесь, что * .example.com настроен так, чтобы указывать на сервер example.com. (Вам нужно будет создать запись имени для того же. Вы должны использовать «Поддомен подстановочного знака», как указано в «balupton»)

1 голос
/ 01 сентября 2010

Сначала нужно настроить серверное программное обеспечение.
? user = myusername - это путь на хосте www.example.com
в то время как www.myusername.example.com является другим хостом
Браузер должен знать, какой IP-адрес должен вызываться для домена www.myusername.example.com.

Таким образом, прежде всего вам необходимо настроить DNS-запись , чтобы сделать все дочерние домены псевдонимами основного домена.
Затем вам необходимо настроить программное обеспечение веб-сервера так, чтобы оно принимало все субдомены.
И, наконец, вы можете обработать любой запрос субдомена. Нет .htaccess участвует.

Для получения подробной информации - обратитесь к многочисленным тем же вопросам, на которые ранее был дан ответ на SO.

0 голосов
/ 01 сентября 2010

Функция, которую вы ищете, называется Подстановочные поддомены . Это позволяет вам не настраивать DNS для каждого субдомена, а вместо этого использовать перезапись apache для перенаправления. Вы можете найти хороший учебник здесь , но там есть тысячи учебников. Вот необходимый код из этого урока:

<VirtualHost 111.22.33.55>
    DocumentRoot /www/subdomain
    ServerName www.domain.tld
    ServerAlias *.domain.tld
</VirtualHost>

Однако, поскольку для этого требовалось использование VirtualHosts, его необходимо указать в файле httpd.conf сервера, а не в локальном .htaccess.

0 голосов
/ 01 сентября 2010

Вы можете сделать это частично с файлами .htaccess, но некоторые настройки должны быть выполнены на уровне httpd.conf. По сути, это выглядело так:

a) Настройте свой домен, чтобы иметь подстановочные знаки DNS для зоны. Точная информация о том, как это сделать, зависит от того, кто является вашим DNS-провайдером или какое программное обеспечение BIND вы используете. Но в основном все настраивается так, чтобы * .example.com указывал на адрес вашего сервера.
б) Настройте веб-сервер следующим образом:

<VirtualHost x.x.x.x:80>
    ServerName *.example.com
    ...
</VirtualHost>

<VirtualHost x.x.x.x:80>
    Server some.fixed.subdomain.example.com
    ...
</VirtualHost>

Убедитесь, что вы перечислили любые нединамические домены ПОСЛЕ подстановочного знака, иначе, скорее всего, ничего не получится Apache довольно требователен к порядку, в котором он установлен.

При такой настройке нет необходимости переписывать запросы в запрос. Вы можете сделать так, чтобы ваши скрипты проверяли $_SERVER['HTTP_HOST'], чтобы выяснить, какой виртуальный поддомен обслуживается, и работать оттуда.

0 голосов
/ 01 сентября 2010

Я не верю, что вы можете сделать это в файлах .htaccess.То, что вы описываете, это настройка количества виртуальных хостов для обслуживания данным экземпляром Apache.Виртуальные хосты должны быть настроены в файлах конфигурации сервера Apache, а не в файлах .htaccess.См. Документацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...