Мод переписывает субдомены на основе строки запроса
Я дал localhost псевдоним "myhost". Ввод "myhost" в моей адресной строке показывает мне /var/www/index.php. Все идет нормально. Установите виртуальный хост apache в / var / www и назовите его "myhost", затем добавьте три псевдонима: "*.myhost" *.myhost.* "Myhost. *", Идея заключается в том, что он будет работать следующим образом:
myhost = индекс сайта / целевая страница / общие сведения
user.myhost = общие вещи, специфичные для пользователя
myhost.topic = тематические материалы, не специфичные для пользователя
user.myhost.topic = тематические материалы, специфичные для пользователя
но все данные загружаются динамически, поэтому фактические URL будут больше похожи на:
myhost / index.php? user = (пусто или имя пользователя)&host=myhost&app=(пусто или тема)
Я потратил два дня, пытаясь выяснить правила переписывания для этого и не радости. Любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: Кроме того, мне нужно добавить user1.myhost, user2.myhost, myhost.topic1, myhost.topic2, user1.myhost.topic1, user2.myhost.topic1, user1.myhost.topic2, user2.myhost.topic2 и т. Д. в мой файл hosts, чтобы сделать эту работу? Если так, разве нет лучшего способа?
1 ответ
Вы можете использовать эти правила перезаписи для перенаправления всех доменов в myhost
с параметром хоста.
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} myhost
RewriteRule .* - [L]
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^(.*)?(.*)$ $1?$2&host=%{HTTP_HOST} [L]
RewriteRule ^(.*)$ http://myhost/$1?host=%{HTTP_HOST} [L]
Вы также можете получить доменное имя в своем приложении (например, $_SERVER["SERVER_NAME"] в php) и использовать это значение. Таким образом, вам не нужен дополнительный параметр хоста для него.
Вы можете установить простой в использовании DNS-сервер (например, tinydns) и установить поддомены с подстановочными знаками, такие как *.myhost и т. Д. Но user2.myhost.topic2 не является допустимым доменом. Если ваш домен - "example.com", ваши поддомены должны быть "topic1.example.com" или "user1.topic1.example.com". Вы не можете использовать "user1.example.topic1" в качестве домена в Интернете.