如何删除index.php以便可以利用CI技巧?当我删除'index.php'时,它将通过404错误或403,即使控制器上存在必要的类。
这是目前我在根目录上的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
config.php上的其他CI规范:
$config['index_page'] = '';
$config['uri_protocol'] = 'AUTO';
启用了rewrite_module。
在httpd.conf上:
<Directory />
Options FollowSymLinks
AllowOverride None
Order Allow,Deny
Allow from all
</Directory>
编辑:要清楚,我可以访问我的应用的“主页”(http://localhost/projectfolder
)。但是,当我访问特定控制器(http://localhost/projectfolder/admin
)时,它将无法工作。但当index.php位于主机和控制器(http://localhost/projectfolder/index.php/admin
)之间时,它可以工作。我正在寻找解决'index.php'之间的问题。
答案 0 :(得分:0)
请确保已启用mod_rewrite。也请像这样试试httpd.conf
<Directory /youdirectory path>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
另请检查CodeIgniter网址设置here
答案 1 :(得分:0)
扩展永联的评论:
您没有物理删除index.php文件。你得到的是403,因为目录列表被拒绝(并且index.php不存在),而控制器/方法上的404是因为它们实际上不存在。
将CodeIgniter index.php放回它所属的位置,你应该没问题。这一行:
$config['index_page'] = '';
是“删除”index.php的重要部分。使用此空白,CodeIgniter的url / uri帮助函数不会将index.php
放入网址。
有关详细信息,请参阅base_url
上的my answer。
答案 2 :(得分:0)
如果您正在使用localhost,则$ _SERVER ['DOCUMENT_ROOT']将位于您的wamp或xampp文件夹中。它不包含项目文件夹名称。
因此,如果您的项目文件夹名称为“test”,则必须按如下所示编写htaccess。
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /test/index.php/$1 [L]
您必须在最后一行添加“test /”,您不需要在URL中添加index.php。 我希望这会奏效。
答案 3 :(得分:0)
几次读完你的问题之后,它终于有意义了。我相信你需要添加如下的RewriteBase:
RewriteEngine on
RewriteBase /projectfolder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]