使用 mod_rewrite 重定向 ErrorDocument 自定义页面 (500,503)?

Redirect ErrorDocument custom page (500,503) with mod_rewrite?

我想在 IBM HTTP Server 上使用 500 和 503 errorducument 的自定义页面以及缩短器 URL 还使用重写该代码以缩短 URL (WCS)。

以下是我使用的规则:

RewriteCond  %{REQUEST_URI} /en/store(.*)

RewriteRule  ^/en/store(.*)  [R=301,L]

RewriteCond  %{REQUEST_URI} /((?!wcsstore/)(?!search/)(?!cont/)(?!cons/)(?!cs/)(?!wcs/)(?!cache/)(?!webapp/)(?!swagger/)(?!solr/))(.*) 

RewriteRule ^/((?!wcsstore/)(?!search/)(?!cont/)(?!cons/)(?!cs/)(?!wcs/)(?!cache/)(?!webapp/)(?!swagger/)(?!solr/))(.*) /webapp/wcs/stores/servlet/en/store/ [PT,L]

当我不使用缩短 URL 代码时,ErrorDocument 500 /500.html 自定义页面工作正常。但是当我使用缩短 URL 代码时,ErrorDocument 500 /500.html 自定义页面无法正常工作。当我使用像 ErrorDocument 500 "Server in a problem so We will be back shortly" 这样的字符串时,两种情况都可以使用,缩短 URL 代码或不缩短 URL 代码。

您的最终 RewriteRule 与 /500.html 匹配,因此它被重写了。我建议取消添加一个额外的 RewriteCond 来简单地处理错误文档 URL,而不是添加更难以阅读的负面前瞻。

注意:现有条件看起来已经多余了:

RewriteCond %{REQUEST_URI} /((?!wcsstore/)(?!search/)(?!cont/)(?!cons/)(?!cs/)(?!wcs/)(?!cache/)(?!webapp/)(?!swagger/)(?!solr/))(.*)
RewriteCond %{REQUET_URI} ^/\d\d\d.html
RewriteRule ^/((?!wcsstore/)(?!search/)(?!cont/)(?!cons/)(?!cs/)(?!wcs/)(?!cache/)(?!webapp/)(?!swagger/)(?!solr/))(.*) /webapp/wcs/stores/servlet/en/store/ [PT,L]