【问题标题】:Make URL queries readable for php使 URL 查询对 php 可读
【发布时间】:2018-09-08 17:22:02
【问题描述】:

我正在尝试在我没有 root 访问权限的 Apache 2+ 服务器上实现一些 php。一个脚本必须在 URL 中接收变量,但向我发送数据的 API 会生成一个 URL-String,其中包含 # 字符。

问题中的 URL 如下所示:

http://website.name.com/script.php#foo=1&bar=2

foobar 变量有什么方法可以到达script.php?我在其他答案中读到# 之后的所有内容都不会被服务器解析,所以我尝试使用带有RewriteRule.htaccess 文件来替换主题标签,但我无法创建一个工作正则表达式命令。

【问题讨论】:

    标签: php regex apache .htaccess


    【解决方案1】:

    不,问题不在于它没有被服务器解析,问题在于它永远不会被发送到服务器。 # 之后的所有内容都是 local 锚点,并且仅在当前浏览器上下文中可用(因此 Javascript 能够读取它,因为它在当前浏览器上下文中运行)。

    由于它从未发送到服务器,因此您无法在服务器端重写或读取它(因为它不存在)。

    可以做的是在script.php 的结果页面上创建一小段Javascript,然后将其提交回服务器端——通过重定向或通过获取或xmlhttp请求。

    要将请求重新创建为 GET 请求,并使用与本地锚中给定的相同参数,您可以使用 location.hash 并删除 #

    location.href = 'realscript.php?' + location.hash.substring(1);
    

    .. 但我会考虑自己解析哈希,然后在 Javascript 中明确地做任何必要的事情,而不是像那样重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-28
      • 2023-04-07
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      • 2017-11-07
      相关资源
      最近更新 更多