1

我想知道是否有一种方法可以使用 Mod Rewrite 来处理所有可能的 http 状态错误代码(4XX 和 5XX 的),而不是像这样在 htaccess 中声明它们:

# serve custom error pages
ErrorDocument 400 error.php?code=400
[...]
ErrorDocument 510 error.php?code=510

在某处我发现了这个小技巧:

# provide a universal error document
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ error.php [L]

但它不是只处理 404 个吗?如果没问题,我该如何修改我的缓存破坏重写规则以使其也能处理此功能?

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)\.\d+\.(css|js)$ $1.$2 [L]

我需要类似的东西:

IF %{REQUEST_URI} MATCHES "^(.+)\.\d+\.(css|js)$"
    REWRITE TO "$1.$2"
ELSE
    REWRITE TO "error.php"

你能帮我吗?非常感谢!

4

1 回答 1

0

您是否期待一些新的 HTTP 状态代码浪潮在不久的将来出现在网络上,您不能只列出 10 个左右的错误代码来指向正确的相应文档吗?您真的应该浏览HTTP 状态代码列表并选择您的服务器实际上会使用哪些状态代码为那些使用和设置错误文档。一个普通的 Web 服务器可能只会看到 404 和 500,如果权限配置不正确,可能会看到 403,如果您使用共享 Web 服务,可能会看到 509(尽管我认为这是由无论如何,托管服务提供商)。如果你没有构建一些非常先进的网络服务器来做很多不同的事情,那么你只是在浪费网络服务器的微观时间来寻找它永远不会使用的所有错误代码。

但说真的,不要列出从 400 到 510 的每一个状态码。说真的。其中很多是您在执行脚本确定有问题时手动发送的状态代码。

于 2011-12-07T18:48:59.377 回答