在codeigniter中无法删除index.php

时间:2015-04-21 15:52:00

标签: .htaccess codeigniter

我刚刚安装了codeigniter,所以如果我输入:

http://mysuperwebpage.comyr.com/projects/thebookshelf/index.php/welcome

它会显示所有内容。

但我希望在网址中删除此index.php,这样您就可以访问欢迎控制器而无需在index.php之前键入/welcomehttp://mysuperwebpage.comyr.com/projects/thebookshelf/welcome

所以我正在遵循我在堆栈上的相同问题中找到的所有必要步骤。我尝试了什么:

  

的config.php:

$config['base_url'] = 'http://mysuperwebpage.comyr.com/projects/thebookshelf/';
$config['index_page'] = '';
$config['uri_protocol'] = 'REQUEST_URI';
位于根文件夹中的

.htaccess文件:http://mysuperwebpage.comyr.com/projects/thebookshelf/.htaccess

尝试#1 (不工作)

  

htaccess的:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

尝试#2 (不工作)

  

htaccess的:

RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]

尝试#3 (不工作)

  

htaccess的:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

我错过了什么或做错了什么?第一次使用.htaccess。

4 个答案:

答案 0 :(得分:1)

根据CodeIgniter docs,这是一种方法:

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

答案 1 :(得分:1)

好吧,我在主持人的常见问题解答中找到了这些信息: On this page

所以我必须做的就是在所有事情之前加上这些:

RewriteBase /projects/thebookshelf/

所以现在它看起来像这样:

RewriteBase /projects/thebookshelf/

Options +FollowSymLinks
Options -Indexes
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|images|css|js|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]

我希望这对使用虚拟用户主目录路径的用户有所帮助,就像我的情况一样。

答案 2 :(得分:1)

这对我有用

对于 .htaccess 文件(在根文件夹中找到它)

RewriteEngine on
RewriteBase /yourProjectName
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]

<强>的config.php

$config['base_url'] = "";
$config['index_page'] = "index.php";
$config['uri_protocol'] = "AUTO";

答案 3 :(得分:1)

确保.htaccess文件位于文件夹下,而不是应用程序文件夹。
这是你可能不注意的事情。