ErrorDocument& Mod Rewrite

时间:2011-12-07 18:40:55

标签: php apache .htaccess mod-rewrite errordocument

我想知道是否有办法使用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"
你能帮帮我吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

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

但严重的是,不要将每个状态代码从400列到510.严重的是。其中很多都是您在执行脚本确定出错时从手动手动发送的状态代码。