2013-03-05 2 views
0

У меня есть проект codeigniter, установленный в/var/www/html. URL-адреса должны выглядеть следующим образом: http://example.com/clients/abc Я бегу CentOS и Apache 2.2.15.htaccess не читается правильно из DocumentRoot dir

Для того, чтобы получить маршруты для правильной работы я включен mod_rewrite (который я могу видеть на через phpinfo.php) и AllowOverride All в httpd.conf.

My documentroot, определенный в httpd.conf, является/var/www/html.

файл .htaccess в каталоге/вар/WWW/HTML является:

<IfModule mod_rewrite.c> 
    DirectoryIndex index.php 
    RewriteEngine on 
    RewriteCond $1 !^(index\.php|images|css|js|robots\.txt|favicon\.ico) 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ ./index.php/$1 [L,QSA] 
</IfModule> 

Просто это само по себе я получаю 404 страниц на всех моих контроллеров и ни один из моих contollers/мнения не делают, кроме индекса.

Однако. Если создать второй файл .htaccess в каталоге/вар/WWW и поместить одну строку в ней:

ErrorDocument 404 /index.php 

Теперь мои переписывания работы и мои контроллеры и все мои страницы загружается должным образом. Однако я все еще получаю 404 страницы, которые не найдены в firebug, но мои страницы все еще загружаются.

Существует какая-то странная и сумасшедшая вещь, которая происходит здесь, что я не понимаю и не уважаю. Двойные переадресации? Apache не знает, что означает DocumentRoot? Почему файл /var/www/html/.htaccess не распознается, если у меня нет другого файла .htaccess в/var/www?

ответ

2

Обнаружена проблема.

В httpd.conf я изменил

<Directory "/var/www/html"> 
     AllowOverride none 

в

<Directory "/var/www/html"> 
     AllowOverride All 

Это было трудно определить, потому что было значительное количество комментариев в этой настройки каталога и затемнение ее. Было также множество других инструкций AllowOverride All в файле .conf, которые заставляли меня думать, что у меня уже установлен набор настроек.

BUT WAIT, есть еще!

Также я узнал от парня с именем «thumbs» на IRC, что я должен просто разместить содержимое моего файла .htaccess прямо в настройках <Directory> в httpd.conf. Когда вы это сделаете, вы можете вернуться к AllowOverride none и получить значительное повышение производительности.

Смежные вопросы