网址已重新编码?

时间:2019-01-31 00:05:38

标签: php html url encode

我有一些看起来像这样的链接:

https://www.example.com/find?category=food%20%26%20drink

单击链接应带我到一个可以获取该变量的页面,它应显示为“食品和饮料”。

但是,当我单击链接时,它将带我到该URL:

https://www.example.com/find?category=food%2520%2526%2520drink

变量显示为:食物%20%26%20饮料。

如果我将第一个网址直接粘贴到搜索栏中,则效果很好。但是,如果我单击它作为链接,那么它将以某种方式重新编码。

有什么想法,即使它来自不同的页面,也如何读取“食品和饮料”?

非常感谢!

2 个答案:

答案 0 :(得分:0)

意识到链接被写为http而不是https。 因此,它们在被单击时被htaccess文件重写为https,并同时被重新编码。

答案 1 :(得分:-1)

您拥有的链接是双重编码的。可能的解决方案是

  1. 找到代码行,其中链接被再次编码,并且如果已经编码,则使suer不编码。这里有几个示例Click Here
  2. 如果无法更改生成URL的代码形式,则必须两次使用urldecode来解析url参数
<?php
$query = "https://www.example.com/find?category=food%2520%2526%2520drink";

    $param = explode("=", $query);

    print_r(urldecode(urldecode($param[1])));
?>

希望这会有所帮助!