[Nginx] location与rewrite配合处理项目的重写和路...

某个项目中路由是通过$_SERVER['REQUEST_URI']来进行的匹配处理 , 并且隐藏了index.php
前端路径是http://域名/static/css/xxx.css 而实际路径是位于 /绝对路径/template/static中
 
在这样的两种情况下 , 不改代码的条件下使用nginx处理
[url=][/url]
server {        listen       80;        server_name  xxxx;        root   /var/www/html/admin;        location / {            index  index.php;        }        location /static {                root /var/www/html/admin/template;        }        if (!-e $request_filename) {                rewrite ^/((?!static).*)$ /index.php/$1 last;                break;        }        location ~ \.php {            fastcgi_pass   127.0.0.1:9000;            fastcgi_index  index.php;            #fastcgi_connect_timeout    10s;            fastcgi_read_timeout        60s;            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;            fastcgi_param  PATH_INFO  $fastcgi_path_info;            fastcgi_param  PATH_TRANSLATED  $document_root$fastcgi_path_info;            include        fastcgi_params;        }}[url=][/url]
 
最关键的是location块匹配到static后 ,设置了新的root
rewrite正则 , 除去了static , 因为单纯的靠!-e $request_filename排除不了 ,因为它路径是404 , 还是会进判断 ,只能靠正则了
if (!-e $request_filename) {
rewrite ^/((?!static).*)$ /index.php/$1 last;
break;
}
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读