возможно ли создавать динамические поддомены для каждого пользователя с помощью htaccess. например, если есть пользователь с именем пользователя myusername, добавьте для него дополнительный домен, например htttp: //www.myusername.example.com, а когда кто-то загрузит эту страницу, он должен появиться как http: //www.example. com /? user = myusername (используя htaccess)
Сначала вы должны настроить свое серверное программное обеспечение.
? user = myusername – это путь на узле http://www.example.com
а http://www.myusername.example.com – другой хост
Браузеру необходимо знать, какой IP-адрес следует вызывать для домена http://www.myusername.example.com.
Таким образом, в первую очередь вам необходимо настроить DNS-запись, чтобы сделать все поддомены псевдонимами в основном домене.
Затем вы должны настроить программное обеспечение веб-сервера для приема всех поддоменов.
И, наконец, вы можете обработать любой запрос поддомена. нет .htaccess.
Подробные сведения – см. Многочисленные вопросы, ранее заданные здесь на SO.
Да, это возможно!
Вы можете использовать что-то вроде этого:
<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»)
Я не верю, что вы можете сделать это в файлах .htaccess. То, что вы описываете, – это настройка количества виртуальных хостов, которые будут обслуживаться данным экземпляром Apache. Виртуальные хосты должны быть настроены в конфигурационных файлах сервера Apache, а не в файлах .htaccess. См. Документацию.
Вы можете сделать это частично с файлами .htaccess, но часть конфигурации должна быть выполнена на уровне httpd.conf. В принципе, это выглядело бы так:
a) Настройте свой домен на наличие подстановочных DNS для зоны. Точные сведения о том, как это сделать, зависят от того, кто ваш поставщик DNS, или от какого программного обеспечения BIND вы используете. Но в основном устанавливайте вещи так, чтобы * .example.com указывал адрес вашего сервера.
b) Настройте веб-сервер следующим образом:
<VirtualHost xxxx:80> ServerName *.example.com ... </VirtualHost> <VirtualHost xxxx:80> Server some.fixed.subdomain.example.com ... </VirtualHost>
Убедитесь, что вы указываете любые нединамические домены ПОСЛЕ ввода подстановочного знака, или что-то, скорее всего, не сработает. Apache довольно придирчив к порядку, в котором это настраивается.
С помощью этой настройки нет необходимости переписывать запросы в запрос. Вы можете проверить свои скрипты $_SERVER['HTTP_HOST']
чтобы выяснить, какой виртуальный поддомен обслуживается и оттуда работает.
Функция, которой вы пользуетесь, называется поддоменами подстановочных знаков . Это позволяет вам не настраивать DNS для каждого субдомена, а вместо этого использовать перезаписи apache для перенаправления. Здесь вы можете найти хороший учебник, но есть тысячи учебных пособий. Вот нужный код из этого учебника:
<VirtualHost 111.22.33.55> DocumentRoot /www/subdomain ServerName www.domain.tld ServerAlias *.domain.tld </VirtualHost>
Однако поскольку для этого требуется использование VirtualHosts, он должен быть установлен в файле httpd.conf сервера вместо локального .htaccess.