我在一个特定网站上遇到了涉及问号的 URL 问题。
如果你点击这个链接http://granovino.de/?k 它会给出一个找不到的页面。
但在其他网站上并非如此,例如http://annaline.net/?k
我想知道为什么以及如何解决这个问题?我应该调查什么?如果重要的话,该网站是由 Contao 建立的。
谢谢,安德烈
我在一个特定网站上遇到了涉及问号的 URL 问题。
如果你点击这个链接http://granovino.de/?k 它会给出一个找不到的页面。
但在其他网站上并非如此,例如http://annaline.net/?k
我想知道为什么以及如何解决这个问题?我应该调查什么?如果重要的话,该网站是由 Contao 建立的。
谢谢,安德烈
问题确实出在查询字符串上。Contao 检查是否有未使用的 $_GET 变量(意味着系统内没有代码在检查该变量),如果是,则确定 URL 无效并抛出 404。
在 Contao 3 核心中,此检查是在FrontendTemplate->output()
方法中完成的。
在 GitHub 上详细讨论了这个问题。(主要是德语)
为了使 URL 有效,必须调用某些部分代码Input::get('xxx')
以在系统内将查询字符串变量标记为“已使用”。
所以这里有一个关于查询字符串的简短教程
引用自 Wikipedia:在万维网中,查询字符串是统一资源定位器 (URL) 的一部分,其中包含要传递给 Web 应用程序的数据
查询字符串是将数据从应用程序的一个页面传递到另一个页面的技术之一。将它们视为从一页传递到另一页的变量。URL 中问号 (?) 后面的所有内容都是 Query 字符串的一部分。
包含查询字符串的 URL 的典型示例是
http://www.sample-url@priorqurystring.com/?field1=value1&field2=value2&field3=value3
或者如果它包含子站点,则:
上述 URL 中的查询字符串将是
字段1=值1&字段2=值2&字段3=值3
现在此查询字符串对应于具有相应值的 3 个字段(变量)。
在应用程序的服务器端;对于该特定页面,您可以访问查询字符串字段以获取相应的值并处理这些值以获得所需的结果。
有关更多信息,请参阅维基百科
考虑到您的担忧,该网站的开发人员必须已决定以这种方式处理查询字符串,并且必须重定向到“找不到页面”。也许他们正在处理页面上的一些查询字符串,如果找到不正确的字符串,他们会将您重定向到错误页面。