我想知道是否可以使用mod重写以及ErrorDocument减速来根据请求的文件类型自定义错误页面。
例如,请求不存在的html或php文件Apache将提供很好的自定义HTML页面。
但如果请求一个不存在的图像,js,css等文件,那么Apache将提供一个基本的html文件,其上只有一个链接。
这种行为的一个很好的例子是Facebook。尝试请求一个虚假的JavaScript文件,如果你要请求一个不存在的php文件,你会收到一个不同的页面。
答案 0 :(得分:2)
使用ErrorDocument和RewriteRules的组合结束这是有效的,因为php页面会为我抛出404 Not Found。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*(?<!.js|.css|.ico|.txt|.bmp|.gif|.png|.jpeg|.jpg)$ /error/404.php [L]
ErrorDocument 404 /404_basic.html
答案 1 :(得分:0)
使用RewriteCond !-f
以及重写所需的输出页面和R=404
的标记。
答案 2 :(得分:-1)
您可以在404页面中使用PHP脚本:
ErrorDocument 404 /error404.php
在那里,您可以使用PHP分析URL路径(请参阅$_SERVER['REQUEST_URI']
),并确定已请求或预期的资源类型。