2011-11-02 78 views
0

我有我认为是一个奇怪的问题。我在同一个主机平台上开发了多个网站。除了其中一个网站外,所有网站似乎都很好。该网站设置了大约1页(index.php),基于path_info检索从数据库显示的正确数据 - 这已经运行了多年 - 现在在一个网站上停止工作。通过停止工作,我的意思是现在下面的页面转到404错误 - 我留下了深刻的印象,它应该看到index.php作为脚本使用。url/php path_info问题

我认为这是htconfig或其他文件的问题,我无法访问主机端的错误配置。也许有人可以阐明我可以指导他们的地方。我自己htaccess文件完全是空的:

wwww.testsite.com/index.php/page1 

以上经常去的index.php,然后使用$ _ SERVER PATH_INFO检索第1页,并得到与第1页从数据库中相关内容并显示在页面上。有人可以证实我不会生气 - 上面应该去index.php吗?也许也解释了为什么这个url现在被认为是不存在的,因为它似乎不是index.php,而是page1。提前感谢您的任何建议。

+0

他们升级了PHP或apache吗? – Patrick

回答

1

有人可以证实我不会生气 - 上述[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文件在你的文档根在其上述方案中的任何一个,你可以验证这个。

+0

感谢codecaster。我将添加重写代码并对其进行测试 - 但为了让您放心,您可以告诉我更多的多视图 - 我查看了您提供的页面链接,但是这是在htconfig文件中完成的? – kaliok

+0

从该链接:“MultiViews是一个按目录选项,这意味着它可以通过httpd.conf中的,部分中的Options指令设置,或者(如果AllowOverride已正确设置)在.htaccess文件中设置。 – CodeCaster

+0

放入选项多视图给了我一个内部服务器错误:( – kaliok

0

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

无论哪种方式,如果它现在关闭,您可以通过将AcceptPathInfo on添加到.htaccess文件中,如果为该站点设置了AllowOverride FileInfo来重新打开它。

我对其他网络服务器没有任何承诺,但PATH_INFO是CGI规范的一部分,所以我想大多数服务器会有类似的设置。

+0

配置您的nginx以这种方式工作的一种可能的方式写在这里:http://stackoverflow.com/questions/8265941/empty-value-to-path-info-in -nginx - 回报 - 垃圾值 – SimonSimCity