mod_rewrite: поддомен контроллера - PullRequest
2 голосов
/ 23 июля 2011

Итак, у меня есть mydomain.tld, www.mydomain.tld и res.mydomain.tld, все они указывают на один и тот же каталог: /var/www/mydomain.В этом каталоге находится мое приложение codeigniter.

Итак, я пытаюсь перенаправить все запросы, сделанные через res.mydomain.tld, на определенный контроллер с именем resources.

have:

RewriteCond %{HTTP_HOST} ^res\.mydomain\.tld$
RewriteRule ^(.*)$ /index.php?/resources/$1 [L]

Это приводит к ошибке сервера, мой журнал перезаписи не дает никаких сведений о том, почему;он просто показывает очень странную логику, применяемую к строке запроса.

Есть идеи, почему это не работает?

Ответы [ 3 ]

4 голосов
/ 24 июля 2011

Оставьте свой .htaccess раньше.

В ваших маршрутах .php

if($_SERVER["SERVER_NAME"]=="res.mydomain.tld"){
    $route['default_controller'] = "resources";
}else{
    //$route['default_controller'] = Your default controller...
}
3 голосов
/ 23 июля 2011

Вы создали бесконечный цикл. Он продолжает переписывать, потому что правила всегда совпадают и снова совпадают. Просто добавьте правило, подобное приведенному выше, к правилу

RewriteRule ^index.php - [L]

Это предотвратит выполнение оставшихся правил под ним, если (уже переписанный) URL-адрес начинается с index.php

2 голосов
/ 23 июля 2011

Убедитесь, что index.php не соответствует и входит в цикл перезаписи:

RewriteCond %{REQUEST_URI} !^index\.php
RewriteCond %{HTTP_HOST} ^res\.mydomain\.tld$
RewriteRule ^(.*)$ /index.php?/resources/$1 [L]
...