webman nginx rewrite 后怎么获取访问地址

thy6415

nginx rewrite

#前台新闻
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;

使用 request()->fullUrl() 获取访问 url

访问: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()里的好多参数都没有了?

120 3 2
3个回答

2548a

从 request()->header()里获取

  • thy6415 5天前

    request()->header() 是不行的。

  • 2548a 5天前

    request()->header('referer')

  • thy6415 5天前

    referer是来源地址啊,不是当前页面访问url

  • 2548a 5天前

    嗯,我理解错了

cbasil

我也遇到了这个问题,nginx rewrite后$_SERVER['HTTP_HOST']拿到的值是空

keytehu

问题一:怎么得到实际访问的url? //www.a.com/n/abc123

自己写个php函数变换。或者用nginx把实际path加到header里,比如

proxy_set_header path $request_uri;

获取原path使用 $request->header('path')

问题二:怎么判断是 https 还是 http

同样的,nginx将当前请求类型加到header里,webman获取header来判断

proxy_set_header scheme $scheme;

获取协议时 $request->header('scheme') 返回值类似 http 或者 https

  • thy6415 4天前

    感谢,已经按你给的方法解决了。

🔝