
现在想匹配一堆 co-{hash}.test.com。请问如何写 server_name 的正则?
需要将匹配到的 hash 重定向到 demo.test.com/hash/(这里在 location 重写一下就可以了吧?);或者将 root 目录指向 /home/enterprise/$hash。
现在的问题就是,匹配不到 co-{hash}.test.com 这个域名中的 hash 值。
附上 server 的 conf:
server { listen 80; server_name ~^co-(?<hash>.+)?\.test\.com$; #root /home/enterprise/; root /home/enterprise/$hash; access_log logs/enterprise.access.log; location ~ \.(gif|jpg|png|htm|html|css|js|flv|ico|swf)(.*) { expires 30d; } error_page 404 /404.html; location ~ \.php$ { deny all; } location ~ /\.ht { deny all; } } 百度 / Google 出来的全都是官网的 server_name 的配置,一字不差的翻译过来。
好了,结贴。 只需要这么写就可以了。
server_name ~^co-(?<name>.+).test.com$; root html/enterprise/$name; $name 就是匹配到的参数。
官网上的 ~^(?<user>.+)\.example\.net$; 是不行的,不需要 \.
1 xaxb 2018-08-26 09:27:31 +08:00 via iPhone ~^后面要有空格 |
2 LeungJZ OP @sunweiqiang8 要有空格?官方的貌似也没有。 |
3 msg7086 2018-08-26 18:26:53 +08:00 先来缩小一下范围: 你说的匹配不到,是说没法跑进这个 server block 内部,还是说$hash 为空? 如果$hash 为空,有没有试过在 location block 内部读取$hash 的值? |