Ubuntu 服务器:Apache2 似乎将 .php 附加到 URI

Ubuntu 服务器:Apache2 似乎将 .php 附加到 URI

我正在使用 php 库 tonic 来提供 Web 服务。我的资源如下:

base-uri/myResource

现在,如果文件 myResource.php 存在于该目录中,则 mod_rewrite 要查看的 url 是

base-uri/myResource.php

然后重写条件失败,我的应用程序崩溃了(应用程序在 Windows 上的 Apache 上运行)

如果我将 myResource.php 重命名为 myResourceClass.php(或其他任何名称),它就可以起作用。

因此看起来 apache 或者它的模块之一假定使用 base-uri/myResource 我想调用 base-uri/myResource.php 但前提是 myResource.php 存在。

这是一个普遍的问题吗?或者我可以通过某种方式进行配置以避免这种情况发生?

谢谢!

编辑:

如何设置基本的 mod_rewrite?

答案包含同样的观察!

回答:

问题是 Ubuntu 上的默认 Apache 配置:

Options Indexes FollowSymLinks MultiViews

MultiViews 正在将 request_uri 从 myResource 更改为 myResource.php。

解决方案:

  • 在 .htaccess 中禁用 MultiViews:选项 -MultiViews
  • 从默认配置中删除 MultiViews
  • 将文件重命名为 myResourceClass

我选择了最后一个选项,因为无论配置如何它都应该有效,而且我只有 3 个这样的文件,所以更改大约需要 30 秒......

答案1

问题是 Ubuntu 上的默认 Apache 配置:

Options Indexes FollowSymLinks MultiViews

MultiViews 正在将 request_uri 从 myResource 更改为 myResource.php。

解决方案:

  • 在 .htaccess 中禁用 MultiViews:选项 -MultiViews
  • 从默认配置中删除 MultiViews
  • 将文件重命名为 myResourceClass

我选择了最后一个选项,因为无论配置如何它都应该有效,而且我只有 3 个这样的文件,所以更改大约需要 30 秒......

答案2

.htaccess文件夹中很有可能有一个文件,用于检查是否.php存在文件类型,如果存在,则添加.php扩展名。

我的建议是:检查.htaccess文件夹中是否有文件。如果有,而我的建议还不够,请添加您的问题,以便我们进一步讨论。

相关内容