我正在使用我网站的特定动态网址在本地试验问题: 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
答案 0 :(得分:0)
添加(在顶部)以禁用MultiViews:
Options -MultiViews
Apache docs on mod_negotiation描述了多视图选项启用时的功能:
如果 服务器接收/ some / dir / foo的请求和/ some / dir / foo没有 存在,然后服务器读取目录查找所有命名的文件 foo。*,并有效地伪造了一个类型地图,列出了所有这些 文件,为它们分配相同的媒体类型和内容编码 如果客户通过名字要求其中一个,那就会有。然后呢 选择与客户要求的最佳匹配,并返回 文档。