URL 中的 %2F 中断,并且不引用所需的.php文件

2022-08-30 19:50:47

我需要将 / 作为变量作为 URL 的一部分进行传递。

我的结构看起来像这样:www.domain.com/listings/page-1/city-Burnaby+South/type-Townhome/bedroom-2/bathroom-2

在这种情况下,它最终归结为列表.php除此之外的其他所有内容都成为我的PHP脚本通过使用$_SERVER['REQUEST_URI'] var解析的参数。

但是,当其中一个变量在生成URL时通过PHP中的urlencode()变为“Apartment/Condo”并且/变为%2F时,整个事情都会阻塞,我得到一个“未找到”错误。

如何在不破坏URL的情况下传递/?我错过了什么?我认为这些urlencode()字符(%2F,%20等)的全部意义都是为了逃避这些问题。


答案 1

出于安全目的,带有 %2f%5c 的 URL 返回 404/\Apache

您可以修改 Apache 配置以启用 或 。请记住,这可能会引入意外的安全问题,此“功能”旨在缓解这些问题。AllowEncodedSlashes OnNoDecode

Apache docs: http://httpd.apache.org/docs/current/mod/core.html#allowencodedslashes

解决:

这个也得到了我 - 谢谢你的问题


答案 2

你同样可以只做urldecode();


推荐