我知道之前有人问过,但我已经尝试了所有的东西,但它仍然无效。也许它与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]
任何帮助都将不胜感激。
答案 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_url
和index_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
。