所以,我花了好几个小时。我想不明白。我已经阅读了几个留言板,但还没有工作。
这就是我所做的:
1) 在文件夹“/ www / site_name”中添加了名为“.htaccess”的文件。 此文件包含以下内容:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
2) 改变
$config['index_page'] = 'index.php';
到
$config['index_page'] = '';
3) 经历了几个httpd.conf文件,改变了所有可能的行组合:
AllowOverride None
到
AllowOverride All
4) 启用了rewrite_module
这让我非常生气。我花了几个小时才研究这个。
编辑: 也许我没有为所有人设置正确的AllowOverride。哪一个是正确的?
编辑: 我搞定了。感谢您选择的答案
答案 0 :(得分:1)
下面是我在codeigniter安装中使用的.htaccess文件。也许你可以尝试一下来试图排除.htaccess文件?如果这样做,那么我们可以添加您的其他规则,如果它们对您的情况真的有必要吗?
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_URI} ^application.*
RewriteRule ^(.*)$ /index.php?/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?baseurl=$1 [QSA,L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
以下行可满足您的要求,即允许/images/
等目录和robots.txt等文件。如果文件或文件夹存在,则不会重写。但是,应用程序和系统目录受其他规则保护。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d