您的位置:首页 > 运维架构 > Nginx

nginx rewrite 隐藏index.php,利用pathinfo让url更友好

2013-11-30 00:00 701 查看
网上找了好多资料,觉得有一个挺靠谱的,代码如下:

server {
...
location / {
#如果请求既不是一个文件,也不是一个目录,则执行一下重写规则
if(!-e $request_filename){
#重写规则,隐藏index.php...因为看着跟apache的差不多,所以觉得听靠谱的。
rewrite ^/(.*)$ /index.php/$1 last;
}
}
...
}

结果当我使用上面的配置时,重启nginx却遇到报错(不知道你们有遇到过没有):
Restarting nginx: nginx: [emerg] unknown directive "if(!-e" in /etc/nginx/sites-enabled/my:8

而且无论怎么修改也还是报错,所以心灰意冷,就放弃了这个方法,不过问题还是要解决的。。

然后,灵光一闪,我突然想到ubuntu下刚装完nginx时,/etc/nginx/sites-available/default 配置文件中有这样一段代码:

server {
...
location / {
try_files $uri $uri/ /index.html;
}
...
}


我是这样理解上面的代码的,访问一个uri时,如果这个uri不存在, 则访问根目录下的index.html的资源。
根据我的理解,我进行了大胆的尝试,于是就有了如下代码:

server {
...
location / {
try_files $uri /$uri /index.php/$uri;
}
...
}


配置完,保存,重启nginx,然后访问url: http://my/Home/Index/index 得到的结果是 http://my/index.php/Home/Index/index的内容。。
rewrite成功

这个方法有什么弊端暂时不知道。。

如果有大神知道的,麻烦告诫一下!

在此谢过啦。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息