0

我遇到了我认为是一个奇怪的问题。我在同一个托管平台上开发了几个站点。除了其中一个站点之外,所有站点似乎都很好。该网站围绕 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。提前感谢您的任何建议。

4

2 回答 2

1

有人可以确认我没有发疯 - 上面的 [www.testsite.com/index.php/page1] 应该转到 index.php 吗?

没有。这应该在文档根page1目录的目录中查找一个名为.index.phpwww.testsite.com

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

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

另一种可能性是MultiViews之前已启用,现在不再启用。使用 MultiViews,您还可以获得您所描述的行为。如果主机允许,您可以通过简单地创建一个包含以下内容的 .htaccess 文件来启用它:

Options MultiViews

如果您将包含上述任一解决方案的 .htaccess 文件放在文档根目录中,则可以验证这一点。

于 2011-11-02T12:54:07.007 回答
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 规范的一部分,所以我认为大多数服务器都会有类似的设置。

于 2011-12-21T14:45:20.777 回答