【问题标题】:Hiding some GET parameters from URL从 URL 中隐藏一些 GET 参数
【发布时间】:2016-08-23 00:56:22
【问题描述】:

我正在使用 PHP 标头位置重定向页面:

浏览器中的当前网址

 https://mywebsite/open/firstpage/php/start.php?&cnt=us&language=en&url=http://secureURL.com

但想展示

https://mywebsite/open/firstpage/php/start.php?&cnt=us&language=en

我在另一边使用 GET 方法来收集所有变量。我必须在查询字符串中隐藏&url,但想在另一边接收它$_GET['url']

如何在不显示在 URL 查询字符串中的情况下分享我的 &url?如何编写 htaccess?

【问题讨论】:

  • 如果&url=... 被从原始字符串中删除,那么它将不能作为$_GET['url'] 使用
  • @anubhava 我在 URL 中保留了 &url=,但不想在 broesers URL 中显示
  • 这是什么意思?如果浏览器看不到 URL 的某些部分,这意味着它们也不会将其发送到您的 Web 服务器。

标签: .htaccess mod-rewrite url-rewriting url-redirection friendly-url


【解决方案1】:

重定向所有网址

RewriteEngine on
RewriteRule ^(.*) $1?%{QUERY_STRING}&url=http://secureURL.com [L]

仅重定向/open/firstpage/php/start.php

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/open/firstpage/php/start.php
RewriteRule ^(.*) $1?%{QUERY_STRING}&url=http://secureURL.com [L]

我想这就是你想要的。

【讨论】:

  • 是的,但我仍然不确定是否需要重定向所有 url 或只是提到的一个。
【解决方案2】:

你不能那样做。如果查询字符串中不存在参数,则它不会在任何地方可用,只是不存在。没有“隐藏”查询字符串之类的东西。

但是,您可以使用某种形式的会话机制将一段数据从一个页面传递到另一个页面。您可以将它放在 $_SESSION 中,或者使用 cookie。 可能还有一种方法可以通过真正神秘的 mod_rewrite 魔法来实现这一点,但你不应该走那条路。真的。

更重要的是:您想要实现什么目标?你为什么要这样做?

审美原因?然后请注意,现代浏览器倾向于对用户隐藏 URI 的查询字符串部分。

安全原因?那你就大错特错了,你不应该使用客户这么容易操纵的东西。

用户跟踪?有一些成熟的解决方案(例如,谷歌分析)。

【讨论】:

  • 我现在正在应用安全盐,我将与第三方分享,他们将检查 RSA。最后两个哈希值应该相同
猜你喜欢
  • 1970-01-01
  • 2016-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-31
  • 2021-02-10
  • 2013-08-19
相关资源
最近更新 更多