【问题标题】:How to extract URL parameters on 404 Error in PHP如何在 PHP 中提取 404 错误的 URL 参数
【发布时间】:2011-10-13 00:23:05
【问题描述】:

我的 htaccess 重定向到 error404.php,但我希望该 PHP 文件能够提取原始 url 参数。

例如:

http://mywebsite.com/unknownfile.php?param1=value1&param2=value2

我试过$_GET['param1'] 但那是空的。 $_SERVER['PHP_SELF'] 只显示 error404.php

非常感谢。

【问题讨论】:

  • 重定向是如何实现的?您是在重写请求还是实际重定向(即向您的 PHP 脚本添加 Location 标头)?
  • .htaccess 只有这个内容:ErrorDocument 404 /error404.php
  • 这是一个 htaccess 重定向(对于 404 未找到)

标签: php .htaccess url parameters get


【解决方案1】:

您可以通过$_SERVER["REQUEST_URI"]访问原始网址。

例如:请求不存在的 URL /hihi/meow?key=rumba$_SERVER["REQUEST_URI"] 将包含该字符串,您可以使用 parse_url() 函数对其进行解析以拆分为多个部分并使用其他函数(例如 explode() 以获取单个查询字符串参数。

【讨论】:

  • 只是好奇为什么 PHP 在这种情况下不填充 $_GET,看起来很不直观。
  • @Michael 根据 php.net:$_SERVER 是一个数组,包含标题、路径和脚本位置等信息。该数组中的条目由网络服务器创建。,而$_GET是一个关联数组,由传递给当前脚本的变量通过URL 参数。 所以回答你的问题:$_GET 包含传递给 CURRENT 脚本的变量,$_SERVER 包含服务器本身创建的变量。由于错误脚本回退(即 404)和当前脚本不同,$_GET 不会填充传递给第一页的变量
【解决方案2】:

如果您重定向此信息将仅出现在$_SERVER['HTTP_REFERER']

【讨论】:

  • 忘了说我也试过了 $test = $_SERVER['HTTP_REFERER']; echo "test = $test ";但我什么也没得到测试=
  • 那么你如何重定向?
  • unknownfile.php 正在访问不存在,我的 htaccess 有一个重定向为 404 not found to error404.php。
  • 这并没有回答关于如何重定向的问题。发布您在 .htaccess 中编写的行/s
猜你喜欢
  • 2016-03-19
  • 2017-01-19
  • 2014-07-30
  • 2017-09-30
  • 1970-01-01
  • 1970-01-01
  • 2021-06-15
  • 2015-12-16
  • 2021-10-20
相关资源
最近更新 更多