使URL查询对php可读

时间:2018-09-08 17:22:02

标签: php regex apache .htaccess

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

“问题”中的网址如下:

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

foobar变量是否可以到达script.php?我在其他答案中读到,#之后的所有内容都不会被服务器解析,因此我尝试使用带有.htaccess的{​​{1}}文件替换主题标签,但是我无法创建有效的RegEx命令。

1 个答案:

答案 0 :(得分:0)

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

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

您可以 做的是在script.php的结果页面上创建少量Javascript,然后将其提交回服务器端-通过重定向或通过提取或xmlhttprequest。

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

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

..但是我会考虑自己解析哈希,然后显式地执行Javascript中所需的任何操作,而不是像这样重定向。