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

Я дал 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" в качестве домена в Интернете.

Другие вопросы по тегам