REQUEST_FILENAME错误的值

时间:2017-10-24 16:13:52

标签: php apache .htaccess

我正在使用我网站的特定动态网址在本地试验问题: test.app/en/schools/stpauls 。在生产中它运作良好。

在我的.htaccess中我有这个:

RewriteEngine on
RewriteBase /

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

问题在于,REQUEST_FILENAME的值是错误的,这是 schools.php 而不是学校,所以它认为它是一个真实的文件所以它没有&#39 ; t输入index.php,它是我的路由控制器。

另外,如果我打印php INFO_VARIABLES,我得到这个:

_SERVER["REDIRECT_URL"] /en/schools.php/stpauls
_SERVER["REQUEST_URI"]  /en/schools/stpauls

为什么他们不一样?不应该是一样的吗?

在哪个时刻设置_SERVER [&#34; REDIRECT_URL&#34;]或者在哪里添加.php扩展名到REQUEST_FILENAME变量?

我在WAMPSERVER 3.0.6上运行Apache 2.4.23

1 个答案:

答案 0 :(得分:0)

添加(在顶部)以禁用MultiViews:

Options -MultiViews

Apache docs on mod_negotiation描述了多视图选项启用时的功能:

  

如果   服务器接收/ some / dir / foo的请求和/ some / dir / foo没有   存在,然后服务器读取目录查找所有命名的文件   foo。*,并有效地伪造了一个类型地图,列出了所有这些   文件,为它们分配相同的媒体类型和内容编码   如果客户通过名字要求其中一个,那就会有。然后呢   选择与客户要求的最佳匹配,并返回   文档。