url/php path_info issue


url/php path_info issue

我认为我遇到了一个奇怪的问题。我在同一个托管平台上开发了几个网站。所有的网站似乎都很好,除了其中一个。该网站设置在1页左右(index.php),检索正确的数据显示从数据库基于path_info -这已经工作了多年-现在在一个网站上,这已经停止工作。通过停止工作,我的意思是,如果下面的页面现在出现404错误-我的印象是,它应该看到index.php作为脚本使用。

我相信这是htconfig或其他文件的问题,我无法访问主机端的错误配置。也许有人能告诉我该带他们去哪。我自己的htaccess文件是完全空的:

wwww.testsite.com/index.php/page1

上面的代码用于转到index.php,然后使用$_SERVER path_info检索page1并从数据库中获取与page1相关的内容,并将其显示在页面上。有人能确认我是不是疯了-上面应该去index.php请?也许也解释了为什么url现在被视为不存在,因为它似乎不是去index.php,而是page1。谢谢你的建议

有人能确认我是不是疯了-上面的[wwww.testsite.com/index.php/page1]应该去index.php请?

不。它应该在www.testsite.com的文档根目录index.php中查找一个名为page1的文件。

我想你曾经有一个。htaccess文件看起来像这样:

RewriteEngine on
RewriteRule ^index.php(.*)$ index.php

另一种可能性是以前启用了MultiViews,现在不再启用了。通过MultiViews,你还可以得到你所描述的行为。如果主机允许,您可以通过创建一个.htaccess文件来启用它,该文件包含:

Options MultiViews

如果你在你的文档根目录下放了一个.htaccess文件,上面提到的解决方案中的任何一个,你可以验证这一点。

在Apache中,如果您在Apache配置(包括.htaccess,如果服务器配置允许的话)中有AcceptPathInfo on相关的任何地方,并且有一个文件/index.php,那么/index.php/stuff应该确实去/index.php,并且应该设置$_SERVER['PATH_INFO']"/stuff"。CGI脚本处理程序和mod_php*在默认情况下也会这样做,所以除非显式地关闭它,否则它应该正常工作。

无论哪种方式,如果它目前是关闭的,你可以通过添加AcceptPathInfo on到你的。htaccess文件来打开它,如果AllowOverride FileInfo是为网站设置的。

我不保证其他web服务器,但PATH_INFO是CGI规范的一部分,所以我想大多数服务器都会有类似的设置