我正在使用 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 存在。
这是一个普遍的问题吗?或者我可以通过某种方式进行配置以避免这种情况发生?
谢谢!
编辑:
看
答案包含同样的观察!
回答:
问题是 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
文件夹中是否有文件。如果有,而我的建议还不够,请添加您的问题,以便我们进一步讨论。