【问题标题】: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
foo 和bar 变量有什么方法可以到达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 中明确地做任何必要的事情,而不是像那样重定向。