nginx的配置问题,采用url路由,如何配置nginx.conf
采用php框架,单一入口,url方式为:http://localhost//controller/action/param/value,全部都由index.php处理,u...
采用php框架,单一入口,url方式为:http://localhost//controller/action/param/value,全部都由index.php处理,url中的controller、action、param、value分别是控制器,控制器的方法,参数名称,参数值,并不是实际存在的目录。
展开
1个回答
展开全部
这个貌似只要定向到 index.php 就 OK 了吧。
关键是你框架的 Router 类够强壮,nginx.conf 里面基本不用多写啥的
location / {
index index.php;
if (!-f $request_filename){
rewrite ^/(.+)$ /index.php?$1& last;
}
}
location ~ .*\.php?$ {
fastcgi_pass 127.0.0.1:3333;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
关键是你框架的 Router 类够强壮,nginx.conf 里面基本不用多写啥的
location / {
index index.php;
if (!-f $request_filename){
rewrite ^/(.+)$ /index.php?$1& last;
}
}
location ~ .*\.php?$ {
fastcgi_pass 127.0.0.1:3333;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
追问
重定向到index.php后的处理不是这样的,index.php直接获得url中的controller、action等值,还是处理/a/b这样的格式,url中并不出现index.php。只不过是把所有请求的url交给index.php处理。
追答
其实你的框架实现方法和 ZF 的 URI 原理很相似,都是全局 index.php 为入口,所有的请求全部由 index.php 来 rule。原链接可能是这样的 http://127.0.0.1/index.php?someaction=someparam&other
按照我的规则, rewrite 之后 url 看起来应该是这样的 http://127.0.0.1/someaction/someparam。
URL 中并不会出现类似 http://127.0.0.1/index.php/someaction/someparam 这样的情况。
如果不能够出现这种目录式的 URL 结构,那么肯定是你的 URI 和 Router 没有抽象到位
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询