我在 /etc/nginx/redirect.conf 文件中有两个重定向:
rewrite /this-link https://www.google.com redirect;
rewrite /this-link-too https://mail.google.com redirect;
尝试前往http://www.example.com/此链接或者http://www.example.com/this-link-too都去https://www.google.com。
有没有办法强制精确匹配?
以下为示例配置:
server {
listen 80;
server_name www.example.com;
index index.html;
error_page 404 http://www.example.com/error.html;
location / {
try_files $uri @redirect;
}
location @redirect {
include /etc/nginx/redirect.conf;
}
答案1
该rewrite
指令接受一个正则表达式,因此/this-link-too
匹配/this-link
,因此您的第一个重写总是会被使用。Rewrite
除非您确实需要匹配正则表达式或进行替换,否则应该避免。
您应该考虑使用完全location
匹配return
。
例如:
location = /this-link {
return 302 https://www.google.com/;
}