存在同名文件夹时不显示网页


Webpage not displaying when folder of the same name exists

我正在使用WampServer构建一个网站进行本地开发,我当前的结构如下:

/css/
/js/
/pictures/
index.php
blog.php
games.php
.htaccess

一切正常,直到我创建了一个名为"/blog"的文件夹。这立即打破了我的博客.php页面。现在我已经删除了该文件夹,重新启动了WampServer并重新启动了整个计算机,但是错误仍然存在。出于某种原因,当我转到mysite/blog时,它会重定向到mysite/blog/并返回内部服务器错误。游戏页面没有这样的问题。如果我将 blog.php 重命名为 myblog.php,问题就解决了,所以它只与文件名有关。

那么删除文件还不够吗?我需要以某种方式刷新WampServer吗?

如果它很重要,这是我的.htaccess文件:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}'.php -f
RewriteRule ^(.*)$ $1.php

谢谢

问题出在 htaccess 文件和您选择的命名约定中。

特别是这条线

RewriteCond %{REQUEST_FILENAME} !-d

说如果文件不是目录,请使用重写。 在/blog 的情况下,不满足条件,htAccess 不会拉取博客.php因为/blog 实际上是一个目录。删除文件夹应该足以修复它,但老实说,这是在自找麻烦。为什么不直接去博客.php?

mysite/blog将在blog文件夹中查找,如果存在index.php文件。

仍然可以拥有同名的文件和文件夹(给定您当前的.htaccess),您只需要通过转到mysite/blog来访问博客.php.php

试一试。您应该打开多视图,这样它就不会尝试模式匹配并做奇怪的事情。确保在更新 .htaccess 后清除浏览器缓存。

Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L]