首先说明,这个rewrite规则可能纯属个案,是根据程序员需要写的。
Yii
How to hide index.php on nginx?
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
access_log off;
}
Second, we need the following rewrite rule to hide index.php:
location /yiiGuestbook {
if (!-e $request_filename){
rewrite (.*) /yiiGuestbook/index.php/$1;
}
}
上面的配置,定义了一个PATH_INFO $fastcgi_script_name;把对非文件的请求转到/yiiGuestbook/index.php
用上面的解决办法并不符合我们程序员的需要。我们需要的是对http://127.0.0.1/index.php/test/test这样的请求,PATH_INFO等于/test/test,并且把/test/test转到index.php。但是nginx的PATH_INFO变量默认是没有的,只能自己定义。于是有了下面的解决办法。
#add for yiiframework
if (!-e $request_filename){
rewrite (.*) /index.php break;
}
#end for yiiframework
location ~ .*\.php?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
include fcgi.conf;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
set $path_info "";
if ($request_uri ~ "^(.+?\.php)(/.+)$") {
set $path_info $2;
}
if ($request_uri ~ "^(.+?\.php)(.*)(\?.*)$") {
set $path_info $2;
}
fastcgi_param PATH_INFO $path_info;
}
为了代码美观,最后决定用直接用http://127.0.0.1/test/test这样的请求,实现起来也非常简单,应为PATH_INFO直接就等于$request_uri。有"?"传值时特殊考虑。配置如下。
#add for yiiframework
if (!-e $request_filename){
rewrite (.*) /index.php break;
}
#end for yiiframework
location ~ .*\.php?$
{
#fastcgi_pass unix:/tmp/php-cgi.sock;
include fcgi.conf;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
set $path_info $request_uri;
if ($request_uri ~ "^(.*)(\?.*)$") {
set $path_info $1;
}
fastcgi_param PATH_INFO $path_info;
}
分享到:
- 2009-10-10 01:01
- 浏览 2848
- 评论(0)
- 论坛回复 / 浏览 (0 / 4134)
- 查看更多
相关推荐
### Nginx Rewrite 常用示例解析 #### 一、从非-www 版本自动重定向到 www 版本 **应用场景:** 当用户访问 `abc.com`(无 www 的版本)时,需要自动重定向到 `http://www.abc.com`。 **配置示例:** ```nginx ...
### Nginx的Rewrite规则与实例:深入解析与应用 在现代Web服务器管理与运维领域,Nginx因其高效、稳定以及丰富的功能而备受推崇。其中,Rewrite模块是Nginx的一项重要特性,它允许管理员对HTTP请求进行重写、重定向...
在Nginx中,Rewrite模块是实现URL重写的重要工具,它允许我们根据预定义的规则对请求的URL进行转换,从而实现动态URL到静态URL的映射、隐藏真实路径、实现URL路由等目的。这篇文档将深入解析Nginx中Rewrite模块的...
### 实例讲解Nginx的rewrite规则 #### 正则表达式匹配 在Nginx中,使用`rewrite`指令可以实现对URL的重写,其中涉及到正则表达式的匹配方式有以下几种: 1. **区分大小写的匹配**:使用`~`符号,例如:`rewrite ^/...
**Nginx Rewrite 规则详解** 在Web服务器领域,Nginx以其高效、轻量级的特性,被广泛用于处理静态内容和反向代理。其中,`rewrite`规则是Nginx的一项重要功能,它允许我们重写URL,实现动态路由、URL美化等目的。与...
Nginx 中 rewrite 实现二级域名、三级域名、泛域名、路径的重写 Nginx 中的 rewrite 模块是实现 URL 重写和.redirect 的强大工具。下面我们将详细介绍 Nginx 中如何使用 rewrite 实现二级域名、三级域名、泛域名、...
nginx Rewrite语法详解 rewrite规则 常用的命令 if (条件) {} 设定条件,再进行重写 set #设置变量 return #返回状态码 break #跳出rewrite rewrite #重写 Nginx入门到实践-中间件服务、应用层负载均衡、应用层...
在Nginx服务器配置中,`rewrite`指令用于URL重写,这在创建动态到静态页面的重定向、实现URL路由、或者根据特定条件改变URL结构时非常有用。当URL中包含问号(`?`)以及参数时,处理起来可能会有些复杂,因为问号及其...
#nginx-rewrite彻底解决discz X3多入口问题 #本规则仅适用于nginx。请大家举一反三,根据自己的实际应用情况进行适当调整。有点繁琐,但是有用。 #本文由丽江热线CTO shwan原创,转载请保留本行信息。应用效果见:...
首先查看下nginx是否支持rewrite: ./nginx -V 不支持说明安装nginx时候缺少pcre,需要重新安装nginx: #安装pcre wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.34.tar.gz tar -zxvf pcre-...
下面将详细介绍如何在LNMP环境中配置Nginx的rewrite规则。 首先,了解rewrite规则的基本概念。Nginx的rewrite模块允许我们根据特定的条件重写请求的URI,这在实现URL路由、隐藏真实路径、SEO优化等方面非常有用。它...
**Nginx Rewrite模块应用详解** Nginx的Rewrite模块是其强大的URL重写工具,它可以基于HTTP请求的URL动态改变请求的目标,实现各种复杂的路由控制和URL美化功能。以下我们将详细介绍Nginx Rewrite模块在不同场景下...
**Nginx Rewrite规则配置详解** 在Web服务器优化和URL管理中,Nginx的Rewrite规则扮演着重要角色。它允许我们根据特定条件重写请求的URL,从而实现动态URL到静态URL的转换、URL规范化、路径重定向等。Nginx的...
Yii的Nginx rewrite 如下为nginx yii的重写 server { set $host_path /data/site/www.jb51.net; access_log /data/logs/nginx/www.jb51.net_access.log main; server_name jb51.net www.jb51.net; root $host_path...
导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面。 nginx rewrite重写规则与防盗链配置方法如下所示: nginx rewite...