【问题标题】:url/php path_info issueurl/php path_info 问题
【发布时间】:2023-03-08 16:21:01
【问题描述】:

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

【问题讨论】:

  • 他们升级了 PHP 还是 apache?

标签: php url pathinfo


【解决方案1】:

有人能确认我没有发疯吗?上面的 [www.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 文件放在文档根目录中,则可以验证这一点。

【讨论】:

  • 感谢编解码器。我将添加重写代码并对其进行测试-但为了让您安心,您能否在多视图上方告诉我更多信息-我查看了您提供的页面链接,但这是在 htconfig 文件中完成的吗?
  • 来自该链接:“MultiViews 是一个针对每个目录的选项,这意味着它可以使用 httpd.conf 中的 部分中的 Options 指令进行设置,或者(如果 AllowOverride 设置正确)在 .htaccess 文件中。"
  • 输入选项多视图给了我一个内部服务器错误:(
  • 并且重写规则似乎也不能解决问题:(
  • 请表明您也愿意找到解决方案,不要指望我(或任何人)为您使用 Google。 “选项多视图内部服务器错误”给了我this 站点。长话短说,您的主机应该启用它。或者你可以试试 mod_rewrite 部分。
【解决方案2】:

在 Apache 中,如果您在 Apache 配置中的任何相关位置有 AcceptPathInfo on(包括 .htaccess,如果服务器配置允许的话)并且有一个文件 /index.php,那么 /index.php/stuff 确实应该转到 @987654326 @,并且应该$_SERVER['PATH_INFO'] 设置为"/stuff"。 CGI 脚本处理程序和 mod_php* 甚至默认执行此操作,因此除非明确关闭它,否则它应该可以正常工作。

无论哪种方式,如果它当前处于关闭状态,您可以通过将 AcceptPathInfo on 添加到您的 .htaccess 文件来重新打开它,前提是为该站点设置了 AllowOverride FileInfo

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

【讨论】:

猜你喜欢
  • 2020-12-20
  • 1970-01-01
  • 2016-12-31
  • 2016-11-19
  • 2011-10-14
  • 1970-01-01
  • 2010-12-06
  • 2015-12-09
  • 2015-06-03
相关资源
最近更新 更多