На моем новом сайте я хочу иметь динамические поддомены. Я пытаюсь сделать так, чтобы поддомены использовали тот же веб-корень, что и основной домен, все в рамках одной установки 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]