break、return跳转案例

案例:当访问网站--->中国人读汉语,美国人访问相同的网站切换到英文状态,这个如何实现?

[root@web01 conf.d]# cat url.oldxu.com.conf 
server {
	listen 80;
	server_name url.oldxu.com.cn url.oldxu.com.jp;
	
	#判断
	if ( $http_host ~* cn ) {
		set $language zh;
	}
	if ( $http_host ~* jp ) {
		set $language jp;
	}
	
	rewrite ^/$ http://url.oldxu.com/$language/;
}

server {
	listen 80;
	server_name url.oldxu.com;

	location / {
		root /data;
	}
}


中国			url.oldxu.com    ---> url.oldxu.com   --->中文
english			url.oldxu.com    ---> url.oldxu.com   --->english

server {
	listen 80;
	server_name url.oldxu.com;

	location / {
		if ( $http_accept_language ~* "en" ) {
			set $language en;
		}
		if ( $http_accept_language ~* "zh|zh-CN" ) {
			set $language zh;
		}

		root /data/$language;
	}
}


  • return跳转
server {
	listen 80;
	server_name url.oldxu.com;

	location / {
		default_type text/html;
		if ($request_uri ~* "a1=3526") {
			return 200 "https://www.jd.com";
		}
		if ($request_uri ~* "git"){
			return 403;
		}
		if ($request_uri ~* "^/test") {
			return 302 "https://www.jd.com";
		}
		if ( $http_accept_language ~* "en" ) {
			set $language en;
		}
		if ( $http_accept_language ~* "zh|zh-CN" ) {
			set $language zh;
		}
		root /data/$language;
	}
}

  • break
server {
    listen 80;
    server_name url.oldxu.com;
    root /code;

    location / {
        rewrite /1.html /2.html 
	break;
        rewrite /2.html /3.html;
    }

    location /2.html {
        rewrite /2.html /a.html;
    }

    location /3.html {
        rewrite /3.html /b.html;
    }
} 
[root@web01]# echo "1.html" >/code/1.html
[root@web01]# echo "2.html" >/code/2.html
[root@web01]# echo "3.html" >/code/3.html
[root@web01]# echo "a.html" >/code/a.html
[root@web01]# echo "b.html" >/code/b.html

跳转   :
重定向  :
#flag
last       		#本条规则匹配完成后,继续向下匹配新的location URI规则 	(开发| 伪静态)
break      		#本条规则匹配完成即终止,不再匹配后面的任何规则  		(挂维护页)
redirect   		#返回302临时重定向, 地址栏会显示跳转后的地址
permanent  		#返回301永久重定向, 地址栏会显示跳转后的地址
中国			url.oldxu.com    ---> url.oldxu.com/zh   --->中文
english			url.oldxu.com    ---> url.oldxu.com/cn   --->english

server {
    listen 80;
    server_name url.oldxu.com;
    root /data;

	set $language /default;
	if ( $http_accept_language ~* zh ) {
		set $language /zh;
	}
	if ( $http_accept_language ~* en ) {
		set $language /en;
	}
	if ( $http_accept_language ~* ja ) {
		set $language /jp;
	}

	rewrite ^/$ $language;
	
	location / {
		index index.html;
	}
}
posted @   老王教你学Linux  阅读(134)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示