如何配置不同站点对应404、500错误页面的动态跳转规则
实现多站点动态匹配专属错误页的方案
适用Apache服务器的配置方案
你给出的配置样例为Apache服务的语法,可根据站点数量和部署规则选择以下两种方案:
方案1:各站点虚拟主机独立配置(兼容性最好,无额外模块依赖)
站点数量较少时,直接在每个站点的<VirtualHost>块内单独定义错误页规则即可:
# IN站点虚拟主机配置 <VirtualHost *:80> ServerName in.yourdomain.com Define error_doc /IN/page-not-found.html ErrorDocument 404 ${error_doc} ErrorDocument 500 ${error_doc} # 其余站点常规配置省略 </VirtualHost> # OUT站点虚拟主机配置 <VirtualHost *:80> ServerName out.yourdomain.com Define error_doc /OUT/page-not-found.html ErrorDocument 404 ${error_doc} ErrorDocument 500 ${error_doc} # 其余站点常规配置省略 </VirtualHost>
方案2:全局动态匹配规则(适合站点数量多、规则统一的场景)
如果所有站点都通过统一路径前缀(如/IN/、/OUT/)或域名区分,可通过全局规则自动匹配,无需逐个配置虚拟主机:
# 开启重写模块 RewriteEngine On # 捕获请求路径的首段作为站点标识,写入环境变量 RewriteRule ^/([^/]+)/ - [E=SITE_NAME:$1] # 动态引用变量生成错误页路径,404、500等错误码可分别配置 ErrorDocument 404 /%{ENV:SITE_NAME}/page-not-found.html ErrorDocument 500 /%{ENV:SITE_NAME}/server-error.html
- 如果站点是按域名区分,可直接用内置变量
%{HTTP_HOST}替代自定义的站点变量,无需额外重写规则 - 注意:需确保Apache已加载
mod_rewrite模块,且对应路径下存在错误页文件,避免触发二次404
适用Nginx服务器的配置方案
Nginx场景下可通过内置变量捕获站点标识实现动态匹配,参考配置如下:
# 捕获请求路径首段作为站点标识 set $site_name "default"; if ($request_uri ~ ^/([^/]+)/) { set $site_name $1; } # 定义错误页跳转规则 error_page 404 /$site_name/page-not-found.html; error_page 500 502 503 504 /$site_name/server-error.html;
按域名区分站点的场景下,直接替换为$host内置变量即可。
内容的提问来源于stack exchange,提问作者ck-s
相关产品推荐
相关产品推荐

