我正在尝试删除Code Igniter的url中的index.php。根据官方指南,我应该将以下代码添加到.htaccess文件中。
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
这不起作用。
所以我做了更多搜索,有人说我应该删除索引页面上的默认配置,所以我在config.php文件中进行了更改:
$config['index_page'] = '';
它仍然无效。然后,在更多的搜索中,我找到了不同版本的代码,就像这个(只有一个例子,我已经尝试了很多版本)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
我最初将代码放在根目录的.htaccess中,但由于它不起作用,我还尝试将其添加到其他目录中的.htaccess。然而,仍然没有工作。
我只是使用默认的欢迎页面进行测试,所以我确信这不是编码问题。即。
http://localhost/projectFolder/CodeIgniter/welcome/
有人知道我错过了什么?
答案 0 :(得分:1)
我假设http://localhost/projectFolder/CodeIgniter/
映射到的文件夹是你的docroot,而.htaccess
文件在该目录中。
如果是这种情况,那么您的代码是正确的 - 所以这是您的apache配置问题。通过更改目录块.htaccess
,确保您允许AllowOverride All
个文件。
答案 1 :(得分:0)
我认为以下代码应该适合您
RewriteEngine on
RewriteCond $1 !^(index\.php|css|js|public|themes|captcha|robots|documents|\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
希望这会对你有所帮助。
答案 2 :(得分:0)
对配置文件进行此更改
$config['base_url'] = 'http://localhost/projectname/';
$config['index_page'] = '';
然后在你的.htaccess尝试
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
还要确保在apache配置中启用mod_rewrite
.htaccess文件应位于项目的根目录中,即外部应用程序文件夹