如何从URL中删除index.php

时间:2015-04-07 22:47:01

标签: php .htaccess codeigniter-3

我知道之前有人问过,但我已经尝试了所有的东西,但它仍然无效。也许它与CodeIgniter 3的新版本有关?

我的文件结构是这样的:

blue(public_html)
    --index.php
    --.htaccess

code_igniter
   --application
   --system

.htaccess档案:

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

假设您使用Apache作为启用了ModRewrite的Web服务器,在CodeIgniter中正确设置这一点需要做一些事情:
 1.写得正确.htaccess
 2.有效的application/config/config.php档案
 3.有效的index.php文件。

让我们逐个讨论这些问题。

.htaccess配置

在您的示例中,您遗漏了RewriteBase声明。您需要使用可公共访问目录的绝对路径添加该声明。这是公共目录基础中的.htaccess文件。

RewriteEngine on
RewriteBase /absolute/path/to/blue(public_html)/
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

config.php配置

application/config/config.php中,您需要确保已正确设置base_urlindex_page选项。要从网址中删除index.php,您必须将index_page选项设置为空白。

/*
|---------------------------------------------------------------
| Base Site URL
|---------------------------------------------------------------
*/
$config['base_url'] = 'localhost/blue';

/*
|---------------------------------------------------------------
| Index File
|---------------------------------------------------------------
*/

$config['index_page'] = ''; // <-- note that this is empty!

index.php配置

您的index.php配置文件位于可公开访问的目录的根目录中。在这里,您需要设置应用程序和系统文件夹的绝对路径。

/*
*---------------------------------------------------------------
* SYSTEM FOLDER NAME
*---------------------------------------------------------------
...
*/
$system_path = '/absolute/path/to/code_igniter/system';

/*
*---------------------------------------------------------------
* APPLICATION FOLDER NAME
*---------------------------------------------------------------
...
*/
$application_folder = '/absolute/path/to/code_igniter/application';

在CI中修复了这三项内容后,您应该可以在网址中点击 localhost / blue 而不使用index.php