我想重定向在URL中使用了错误的查询字符串,以自定义错误页,同时通过的.htaccess指令如何重定向错误的查询字符串定制的errorPage + 404状态
ErrorDocument 404 http://www.domain.com/404.php
给予404种状态的用户编辑:这不给404但302! “http://www.domain.com” 导致重定向。就在本地路径给出了404又见http://httpd.apache.org/docs/2.0/mod/core.html#errordocument
因此我决定,如果查询字符串是无效的,如果因此请求接收的index.php做了一个脚本,给出了这样的命令:
header("HTTP/1.0 404 Not Found");
但是这不通过.htaccess指令ErrorDocument重定向,但只是给访问者一个404状态。
当使用header("Location: 404.php")
时,您将获得302状态,使用header("Location: 404.php", true, 404)
时,状态为404,但不会转到自定义404.php页面。
现在我用
header ("Location: ", true, 404);
echo "The URL you use doesn't lead to an existing page, etc.";
但是,这不是原来的计划......我怎么会提出这样在URL中使用了错误的查询字符串将用户重定向到自定义错误页,同时还通过给404个状态.htaccess指令ErrorDocument,或者这是不可能的?
实际上,你可以使用重写规则返回[R = 404],就像您301/302在htaccess中重定向,但它听起来像无效的查询字符串逻辑最好在PHP中处理。但是,如果在htaccess中正确定义(并允许)ErrorDocument 404,则PHP 404头应该足以显示在htaccess中指向的自定义错误页ErrorDocument – WebChemist 2012-08-14 06:46:11
我刚刚尝试确保PHP不会重定向到404页如果你只是发送一个404头。你必须自己处理它。 – GordonM 2012-08-14 07:10:37
我怀疑我的计划是不可能的,因为.htaccess没有被请求再次传递,因为资源通过正在执行的PHP脚本来定位。你最后的建议对我来说看起来不错,但是当我查看access.log时,状态不是404而是302,它只是跳过它看起来的第一个标题命令。 @webchemist:在.htaccess中,我无法检查查询字符串是否有效,因为页面来自数据库,并且.htaccess中的正则表达式无法通过检索要比较的正确值来构建。 – 2012-08-14 07:30:05