当前,我主要重定向到Web服务器的主页。但是,我想在404不是用于home而是针对具有多个子路径的子路径后,对重定向的子路径进行处理。为了不重复这些规则,我必须处理一个REGEX,但是我不知道如何插入这些规则并返回到当前子路径。
家
www.foo.com.br
子路径
www.foo.com.br/machine
www.foo.com.br/cloud
www.foo.com.br/air
今天
# define error page
error_page 404 = @notfound;
# error page location redirect 301
location @notfound {
return 301 /;
}
想要答案404
www.foo.com.br/machine/test123
转到
www.foo.com.br/machine/
答案 0 :(得分:0)
您可以在rewrite
语句之前添加return
规则,以匹配要区别对待的特定子目录。
例如:
location @notfound {
rewrite ^/(machine|cloud|air)/. /$1/ permanent;
return 301 /;
}
有关详细信息,请参见this document。
答案 1 :(得分:0)
REGEX用来提取第一个字段并在404之后重定向:
error_page 404 = @notfound;
location @notfound {
rewrite ^/([\w-]*)/.* /$1/ permanent;
在您的php块中,将fastcgi_intercept_errors
设置为开
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
# intercept errors for 404 redirect
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}