【问题标题】:Get original url for 404 page获取 404 页面的原始 url
【发布时间】:2012-12-02 03:17:24
【问题描述】:

所以我发现了这两个问题:

Accessing original URL in IIS7 404 redirect page Get URL of page requested that caused a 404

但它们都使用不同的语言。有什么方法可以获取导致在自定义消息中使用类似 404 消息的地址?

例如,如果我请求了example.com/example1,但该页面不存在并且它重定向到我的错误页面,我如何才能让example1 显示在类似The pageexample1isn't there 的消息中,或者使用它创建页面example1

【问题讨论】:

    标签: php


    【解决方案1】:

    由于您使用的是 PHP,您将可以访问各种 PHP 超全局变量。 $_SERVER['SCRIPT_NAME']、$_SERVER['REQUEST_URI'] 等可用于此目的。错误页面中应该这样做:

    <?php
        printf("The page %s was not found.", $_SERVER['REQUEST_URI']);
    ?>
    

    更多信息,请查看$_SERVER superglobal documentation

    【讨论】:

      【解决方案2】:

      不能在 $_SERVER['HTTP_REFERER'] 变量中吗?

      http://php.net/manual/en/reserved.variables.server.php

      【讨论】:

      • 我也遇到过同样的问题,使用referer并不总是有效,这取决于,有时,重定向到错误页面时,所有服务器头值都会丢失。
      • @jan-tojnar 这些解决方案不起作用!如果我要求 $_SERVER['HTTP_REFERER'] 它总是空白,并且 $_SERVER['REQUEST_URI'] 给出当前脚本名称而不是错误 url。如果用户键入 domain.com/nosuchfile.php 并且 .htaccess 文件指向 404 错误,如下所示:ErrorDocument 404 domain.com/pagenotfound.php 然后 $_SERVER['REQUEST_URI'] 包含 domain.com/pagenotfound.php
      • @Chiwda 如果你重定向到错误页面,REQUEST_URI 当然会包含错误页面的地址。您可以尝试在ErrorDocument 指令中使用相对路径,这不会导致重定向。
      • 好的。这似乎工作...... ErrorDocument 404 /pagenotfound.php
      • 在我的网络服务器上不起作用,引荐来源为空 - 可能是 ajaxrequest... 还没弄明白。
      猜你喜欢
      • 2016-06-28
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 2011-06-08
      • 1970-01-01
      • 2010-10-21
      • 2015-03-23
      相关资源
      最近更新 更多