包含在PHP 404标题返​​回后"哎呀!此链接似乎已被破坏."

Yev*_*Yev 18 php include http-headers http-status-code-404

总而言之,我在一个显示评论的网站上有动态页面.如果没有与特定城市/县/区域/等相关联的评论,则mysql查询返回0行,触发以下代码:

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    include("http://{$PDS['site']}/404.php?request=".urlencode($_SERVER['REQUEST_URI']));
    exit;
}
Run Code Online (Sandbox Code Playgroud)

在某些webhost上,这会触发"URL文件访问被禁用"错误.这很好,但是在允许访问URL文件的文件上,404文件包含在内并正确显示.我稍微更改了代码以显示如下的绝对路径:

if (!$validRevQuery) {
    header("HTTP/1.0 404 Not Found");
    $_GET['request'] = urlencode($_SERVER['REQUEST_URI']);
    include($_SERVER['DOCUMENT_ROOT']."/404.php");
    exit;
}
Run Code Online (Sandbox Code Playgroud)

而现在,它给了我通用的"哎呀!这个链接似乎被打破了." 错误页面.(我有谷歌工具栏,所以这可能会有所不同,具体取决于浏览器和插件).不知道为什么会这样,所以任何帮助都表示赞赏!

Pek*_*ica 43

您的问题与您所包含的内容无关:这是您的网页太小.

根据我的经验,显示Chrome的内置"Oops"页面,就像在Internet Explorer中一样,当页面仅发出404标题并且少于定义的内容字节数时(我认为它在IE中是512字节,不要不知道Chrome的限制.

我倾向于使用HTML注释中包含的几百字节无意义内容填充我的404页面,以确保显示自定义404页面.

或者当然,利用机会获得一些很酷的ASCII艺术!

   <!--                            oooo   ooo
                                   $   $  $   $
                                   "o  $ $  o""
                                     o  "   "ooooo
                                 oo ""           o$
                   o            o            oo  "
                  $$             $o$""$o  ooo$
                  $"$          o $    "$  $
        o$o       $ "$         $ $     $ $
         $$$o     $$ "$       o$ $     o $o
         "$ ""o   "$   "o     $$ "o     o"
     $o   $$   "o  $     "oo  $"  $   o$"
      "$   $o    "o$$       "o$    $o$" oo$
        "o "$o                     "$o $"$$
          "        oo$$$$$$$oo        $oo$$""      o" o
 """""""""      o$$$$$$$$$$$"$o             o"""$o$$  o$
       ooo$$$"o$$$$$$$$$$$$$$ "$o    o   o$$$o   $ $ o$
    o$$$$$$$$$$$$$$$$$$$$$$$$    "oo  o      ""o  "$ $
   $$$$$$$$$$$$$$$$$$$$$$$$$$      "$o   o$$"""$     " oo""o
o""""$$$$$$$$$$$$$$$$$$$$$$"         ""$o"$o          "   o$
     "$$$$$$$$""""$""$$$""              "$oo$""$o     o$"""
      $$$$$$$"                           $""""$"  o""""
       $"""""$ooooo        ooooo$$$$$$$     o$" o"
        $     """" oooo$$$$$$$$$$$$$$"     $"  o"
      oo$   oooo$$$$$$$$$$$"""""$$$$"    o$" o$"
    "$ $o$$$$$$$$$$$$$""$     o$$$"oooo$"  o"
      "o$ "$$$$$$$$$$$$         $$o$"$$$   $"
        "$  ""$$$$$$$$$        o$"$$$ "$$o$$
          "o   ""$$$$$$o     o$$$$ ""$o """$
            "$o    ""$$$$$$o"  o$$$$oo o$$$$
               ""$oo     $$" "$$$"" ooooooo$
                    """"$"  o$"   oo$$$$$""$$
                       $ oo$"  o$$$$$""  ooo$
                       $o$"  o$$$$"  oo$$$$$$$o
                        $$ o$$$"  o$$$$$$"""""$o
                         "o$$"  o$$$$""  o$$$$$$$o
                           "$oo$$$$"  o$$$$$""" o$o
                             "$$$" oo$$$"" oo$$$$$$$
                          ooooo$oo$$$"" oo$$$$"""$$""
                         $"oooo $$$" o$$$$""      $
                       o$"o$   $$"oo$$""       " o$
                       $ o$$o  $$o$$"          oo$$
                       $ $$$$  $$$$$$$$$$$$$$$$$$$$
                       $ $$$$  $$$$$$$$$$$$$$$$$$$$"
                       $ $$$$  $$$$$$$$$$$$$$$$$$$$
                       $ ""    ""$$$$$$$$$"""$""""
                       $o         $"$"    " $"
                        $o       $$  $o    o$
                         "$o   o$$    ""$$$"
                           """"""  -->
Run Code Online (Sandbox Code Playgroud)

  • 自定义404内容需要大于512字节才能被忽略.为了安全起见,我会做2K无意义的数据.许多浏览器都这样做. (7认同)
  • 请注意,人们想知道为什么这对他们不起作用:如果您的错误页面没有"Content-Length"标题,则此解决方案在Firefox中不起作用,而是依赖于"Connection:close"来终止响应. (5认同)