我在 /var/www/html 中安装了一个 codeigniter 项目。URL 应如下所示:http ://example.com/clients/abc 我正在运行 CentOS 和 Apache 2.2.15
为了让路由正常工作,我在 httpd.conf 中启用了 mod_rewrite(我可以通过 phpinfo.php 看到)和 AllowOverride All。
我在 httpd.conf 中定义的 documentroot 是 /var/www/html。
/var/www/html 中的 .htaccess 文件是:
<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 页,并且除了索引之外,我的所有控制器/视图都没有呈现。
然而。如果我在 /var/www 中创建第二个 .htaccess 文件并将这一行放入其中:
ErrorDocument 404 /index.php
现在我的重写工作正常,我的控制器和我的所有页面都可以正常加载。但是,我仍然得到一个在 firebug 中找不到的 404 页面,但我的页面仍在加载。
这里发生了一些我不理解或不尊重的奇怪和疯狂的事情。双重重定向?Apache 不知道 DocumentRoot 是什么意思?为什么 /var/www/html/.htaccess 文件不被识别,除非我在 /var/www 中有另一个 .htaccess 文件?