CI框架初探——去掉url中的index.php部分

2017/1/17

在开发web网站的时候使用了ci框架,感觉各方面都挺不错的,唯一能看到的比较烦的应该就是URI中的index.php这一段了。一般情况下,一个 URI 字符串和它对应的控制器中类和方法是一一对应的关系。 URI 中的每一段通常遵循下面的规则: example.com/class/function/id/。在这个规则下,URI基本默认情况下就是example.com/index.php/blog/这种形式的。

如果是使用Apache,我们可以通过rewrite规则来去掉URI中index.php部分。

1.修改.htaccess文件

打开网站根目录的.htaccess文件写入如下内容:

RewriteEngine on
RewriteCond $1 !^(index\.php|希望被直接访问的文件或者文件夹名|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

如果我们希望网站的css,js,图片之类的文件可以被直接访问就需要将相关的文件夹或者文件加入RewriteCond中。

如果网站不是在服务配置的域名根目录(一般为www目录),那么RewriteRule ^(.)$ /index.php/$1 [L]就需要修改为RewriteRule ^(.)$ /路径 /index.php/$1 [L]

2.配置Apache2

①开启rewrite功能

方法一:

进入/var/apache2/mods-enabled/然后使用 sudo cp -s ../mods-available/rewrite.load ./命令把相关模块软连接过来

方法二:

sudo a2enmod

程序提示可供激活的模块名称,输入:

rewrite

②开启 .htaccess

sudo vi /etc/apache2/apache2.conf

/var/www/>

Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted

中的AllowOverride None的改为AllowOverride All

重启Apache服务器,这时候就可以去掉URI中的index.php访问我们的页面了