server
{
listen 80;
listen 443 ssl http2 ;
server_name google.com www.google.com ~^(?<subdomain>.+)\.google\.com$;
if ($host != 'www.google.com'){
return 301 http://www.google.com$request_uri;
}
}
^(?<subdomain>.+)\.domain\.com$ 和 ^(?<subdomain>[0-9]+)\.domain\.com$ 有什么区别?
^(?<subdomain>[0-9]+)\.domain\.com$- 匹配:只匹配以一个或多个数字作为子域名的域名。
- 示例:
123.domain.com,4567.domain.com - 不匹配:
abc.domain.com,a1b2.domain.com
详细解释:
^:匹配字符串的开始。(?<subdomain>[0-9]+):一个命名捕获组,名为subdomain,匹配一个或多个数字[0-9]+。\.domain\.com$:匹配字符串以.domain.com结尾。
^(?<subdomain>.+)\.domain\.com$- 匹配:匹配以一个或多个任意字符作为子域名的域名。
- 示例:
abc.domain.com,123.domain.com,a1b2.domain.com,-_.domain.com - 不匹配:
domain.com(没有子域名的情况)
详细解释:
^:匹配字符串的开始。(?<subdomain>.+):一个命名捕获组,名为subdomain,匹配一个或多个任意字符.+。\.domain\.com$:匹配字符串以.domain.com结尾。
总结
[0-9]+:- 只匹配一个或多个数字作为子域名。
- 更加具体和限制严格。
.+:- 匹配一个或多个任意字符作为子域名。
- 更加宽泛和灵活。
选择哪一个取决于你希望子域名部分的匹配规则。如果你只希望匹配数字作为子域名,使用第一个表达式;如果你希望子域名可以包含任意字符,使用第二个表达式。

剧搜博客