我的公司去年收购了广告服务器,联盟网络,联系表格和CRM软件,我们现在正在重新设计我们的技术,以适应母公司的IT政策和指导方针。
其中一项政策是一个巨大的问题,并为我们带来各种各样的问题:
在最终用户可见的任何URL中都不使用查询参数
这包括内容网址,广告点击目标,重定向,任何会显示在地址栏或鼠标悬停状态栏更新中的内容。效果将是没有会员ID参数,媒体源跟踪ID,会话ID,CMS内容选择参数,任何内容。如果不将参数数据从一个页面传递到另一个页面,我们的软件的几个基本功能就无法实现。在我们的案例中,许多链接来自不同的站点或子域,无法通过cookie传递数据
我得到的唯一理由是查询参数会阻止某些代理缓存正常工作。这对我来说毫无意义 - 我从来没有听说过这样的事情 - 没有人愿意或有兴趣详细讨论它。我甚至没有给出一个具体破坏的例子或政策创建的原因。
无论如何,这是一个全球性的企业IT政策,最终推理无所谓,只有合规性。虽然改变它很可能是不可能的,但我仍然想了解哪些有效的问题可能促使其制度化。理解思维方式可能是寻找变通方法的第一步。
我首先想到的解决方法是在URL的路径部分中嵌入参数并使用Apache mod_rewrite提取它们,但这是不可能的,因为:
推论:每个网址都必须提供通过其他网址提供的唯一内容
因此,制作多个实际引用相同页面但在URL中包含其他参数数据的URL也是不可接受的。
问题:
是否有正确的理由不使用查询参数?
具体来说,当查询参数存在时,代理或系统无法正常工作?
它可能与SEO有关吗?推论使它显得如此。
在此限制下,将数据从一个站点传递到另一个站点可能会有什么变通方法?
答案 0 :(得分:2)
我只回答“解决方法”问题:使用PATH_INFO。
修改更具体
而不是/banner.php?what=ever&any=thing
使用/banner.php/what=ever/any=thing
。 apache仍然会通过/banner.php
提供请求,而/what=ever/any=thing
将出现在$_SERVER['PATH_INFO']
中。你必须自己rawurldecode
和explode
字符串,因为网络服务器不会为你做那些,但这没什么大不了的。