#前台新闻
rewrite ^/n/([a-zA-Z0-9]+)$ /www/news/msg?id=$1 break;
#应用根目录访问
rewrite ^/(adminapi|www|m)$ /$1 break;
#应用路径访问
rewrite ^/(adminapi|www|m)/(.*)$ /$1/$2 break;
#没有应用的,默认www应用
rewrite ^/(.*)$ /www/$1 break;
访问:http://www.a.com/adminapi/login/codes
得到://www.a.com/adminapi/login/codes
访问:http://www.a.com/n/abc123
得到://www.a.com/www/news/msg?id=abc123
问题一:怎么得到实际访问的url? //www.a.com/n/abc123
问题二:怎么判断是 https 还是 http
疑问为什么$_SERVER()里的好多参数都没有了?
从 request()->header()里获取
request()->header() 是不行的。
request()->header('referer')
referer是来源地址啊,不是当前页面访问url
嗯,我理解错了
我也遇到了这个问题,nginx rewrite后$_SERVER['HTTP_HOST']拿到的值是空
感觉 webman里
$_SERVER['HTTP_HOST']
本来就是空,和nginx rewrite没关系。webman里获取host用
$request->header('host');
用别人框架得看文档啊如果
$request->header('host');
是空,说明没有按照文档给nginx代理加proxy_set_header Host $host;
参数给你找了下文档
https://www.workerman.net/doc/webman/request.html#%E8%8E%B7%E5%8F%96host
https://www.workerman.net/doc/webman/others/nginx-proxy.html
楼上正解。
楼上这位朋友对我的问题有没有解决方法呀
问题一:怎么得到实际访问的url? //www.a.com/n/abc123
自己写个php函数变换。或者用nginx把实际path加到header里,比如
获取原path使用
$request->header('path')
问题二:怎么判断是 https 还是 http
同样的,nginx将当前请求类型加到header里,webman获取header来判断
获取协议时
$request->header('scheme')
返回值类似http
或者https
感谢,已经按你给的方法解决了。