Назад | Перейти на главную страницу

Мод переписывать поддомены на основе строки запроса

Я дал 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, чтобы это работало? Если да, нет ли лучшего способа?

Вы можете использовать эти правила перезаписи для перенаправления всех доменов на 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 в качестве домена в Интернете.