我注意到,有时(特别是在mod_rewrite不可用的情况下)使用这种路径方案:
http://host/path/index.php/clean_url_here
--------------------------^这似乎是可行的,至少在调用index.php的Apache中是这样的,人们可以通过$_SERVER['PATH_INFO']查询/clean_url_here部件。PHP甚至会一种广告这个特性。另外,例如,CodeIgniter框架使用这种技术作为它们的URL的默认值。
问题是:技术有多可靠?在某些情况下,Apache不调用index.php,而是试图解决路径问题吗?那么lighttpd,nginx,IIS,AOLServer呢?
一个ServerFault问题?我认为这与在PHP代码中使用这个特性有更多的关系。所以我在这里要求。
增编:,正如VolkerK所建议的,对这个问题的合理扩展是:程序员如何在各种服务器类型上影响$_SERVER['PATH_INFO']的存在?
发布于 2010-04-14 07:49:33
我认为这是一个同样适用于堆栈溢出和服务器错误的问题。例如,作为一个开发人员,我只能告诉您,pathinfo与任何用户输入一样可靠(这意味着它可以包含几乎任何内容),并且您的脚本可能收到也可能不会收到,这取决于webserver版本和配置:
Apache:AcceptPathInfo
IIS:例如AllowPathInfoForScriptMappings和其他
等等等等..。
但是服务器管理员可能会告诉您“在现实世界”中您可以期望哪些设置,以及为什么这些设置是首选的。
因此,问题是:您(或预期的用户基础)对服务器配置有多大影响。
发布于 2010-04-14 07:46:56
需要启用http://httpd.apache.org/docs/2.2/mod/core.html#acceptpathinfo才能使其正常工作。
发布于 2010-04-14 08:01:20
根据我的经验,PATH_INFO通常可以在正常的web托管环境和服务器设置中使用--即使在IIS上也是如此--但是在很少的情况下,它不是。当构建一个应该在尽可能多的平台上部署的应用程序时,我不会在硬编码级别上信任path_info。
只要有可能,我就会尝试构建一个包装器函数build_url(),根据配置设置的不同,它使用
www.example.com/index.php?clean_url=clean_url_herewww.example.com/index.php/clean_urlwww.example.com/clean_url并在应用程序发出的所有URL中使用它。
https://stackoverflow.com/questions/2635648
复制相似问题