Codeigniter框架移除 URL 中的 index.php
在Codeigniter的官方文档中有相关的介绍→移除 URL 中的 index.php
但是,那个是针对Apache的配置,我一般使用Nginx,所以现在来写下Nginx的配置
# Nginx服务器,修改配置文件,在server块中加入如下的重定向
location / {
# 重新向所有非真是存在的请求到index.php
try_files $uri $uri/ /index.php$args;
}像这样做:
如果文件或者目录真实存在,则直接访问存在的文件/目录。
比如,静态文件static/css/main.css真实存在,就可以直接访问它。
如果请求地址不是真实存在的文件或目录,这样请求就会传到 index.php 上。
例如,访问地址:localhost/item/detail/1,在文件系统中并不存在这样的文件或目录。
那么,Apache或Nginx服务器会把请求发给index.php,并且把域名之后的字符串赋值给REQUEST_URI变量。
这样在PHP中用$_SERVER['REQUEST_URI']就能拿到/item/detail/1;
另外,Codeigniter中的site_url()还是会自动输出带index.php的URL,所以还需要修改config.php文件
$config['base_url'] = 'http://www.baidu.cn';
$config['index_page'] = '';去掉$config['index_page']中的值
这样就能移除Codeigniter中URL的index.php了
参考资料:
Remove index.php from site_url function in codeigniter
手把手编写PHP MVC框架实例教程·URL重定向
评论已关闭