nginx在二级目录访问需要加/才能访问的解决办法

nginx为什么在二级目录访问的时候要加/才能访问到

比如https://scout.dhhb.com:9443/bigScreen

要这样https://scout.dhhb.com:9443/bigScreen/才能访问到

不加最后那个/无法访问。

解决办法:

第一种(常见做法 【自动添加/】):

if (-d $request_filename){
	rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}

第二种(更佳的替代方法):

最佳方法在nginx.conf 在http或server加入

optimize_server_names off;#优化服务器名称:关
server_name_in_redirect off;#服务器名称重定向:关

官方http://wiki.nginx.org/NginxHttpCoreModule#optimize_server_names说明

Note: this directive is deprecated in nginx 0.7.x, use server_name_in_redirect instead.
备注:这指令nginx 0.7.x已不支持,用server_name_in_redirect代替

optimize_server_names off;
#optimize_server_names 已不支持了 我在nginx 1.6 加上这个会报错的

所以是:

http{
	...
	server_name_in_redirect off;
	...
}

备注: 第二种方案本人测试不可用,但是还是记录了,本人也是采用了第一种方案,自动添加/,如下,在某个路由或者在serve里面加都可以:

location ^~/bigScreen {
  alias /opt/dist/bigScreen;
  index index.html;
  try_files $uri $uri/ /bigScreen/index.html;
		
  # 自动添加 /
  if (-d $request_filename) {
    rewrite ^/(.*)([^/])$ http://$host:9443/$1$2/ permanent;
  }
}
posted @ 2022-12-26 15:38  李帆同学  阅读(1647)  评论(0编辑  收藏  举报
TOP