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

Динамические поддомены

На моем новом сайте я хочу иметь динамические поддомены. Я пытаюсь сделать так, чтобы поддомены использовали тот же веб-корень, что и основной домен, все в рамках одной установки CodeIgniter. Например, subdomain.example.com приведет к example.com/subdomain, который на самом деле является example.com/index.php/subdomain.

Я уже настроил DNS, виртуальные хосты, но я не могу понять .htaccess.

Эффект связанного htaccess заключается в том, что при переходе к любому поддомену он попадает в бесконечный цикл. (Журнал ошибок после одного запроса.) Тот же эффект для www., Который должен просто разрешить основной домен.

Попробуйте следующее:

RewriteCond %{HTTP_HOST} !^www [NC]
RewriteCond %{HTTP_HOST} ^(.*).\crashworks\.co [NC]
RewriteRule ^(.*)$ http://www.crashworks.co/d/%1 [L,R=301]

Здесь важно отметить использование (.*) в RewriteCond и %1 это обратная ссылка, нацеленная на RewriteCond Спички. Дополнительно !^www предотвращает бесконечный цикл.

Увидеть документы apache для дополнительной документации по mod_rewrite.

Я также включил /d/ так как с ним может быть проще выполнить маршрутизацию CodeIgniter, то есть иметь определенный контроллер и / или настройку маршрута.

Примечание: Также рассмотрите возможность использования www с настройкой вашего сайта / домена я понял, что становится намного проще писать правила и, как правило, другую конфигурацию, связанную с администратором / сервером, при работе с несколькими хостами одного домена.

В отличие от приведенных выше правил, я не тестировал следующие правила, которые должны работать без www (и вы можете соблюдать правила "не применять www"):

RewriteCond %{HTTP_HOST} !^crashworks\.co [NC]
RewriteCond %{HTTP_HOST} ^(.*).\crashworks\.co [NC]
RewriteRule ^(.*)$ http://crashworks.co/d/%1 [L,R=301]