快问你们。我的网站的基本文件结构如下:
www.example.com
/
的index.php
otherFiles.php
./目录
index.php
目前,如果您输入 example.com/directory ,它会重定向到我的404页面。您必须输入 example.com/directory/index 。我的假设是,对于每个目录,默认页面为index
,并带有.php
或.html
扩展名。我想我错了,所以我按如下方式配置了该目录的.htaccess
:
DirectoryIndex index.php
但是,没有进展。有什么我想念的吗?为了澄清,我希望 example.com/directory 的网址打开该目录中的索引文件。这是我的通用.htaccess
:
ErrorDocument 404 http://www.example.com/404
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
所以,我在htaccess中注释掉了3个Rewrite
命令,现在我的问题已经解决了。问题是现在正在显示php文件扩展名。有没有办法在不干扰默认索引页面的情况下包含重写规则?或者是其他地方的问题?
答案 0 :(得分:1)
看起来404是由于目录 /directory.php
不存在所致。由于您的RewriteRule
仅在不是真实文件(%{REQUEST_FILENAME} !-f
)的情况下执行,因此该规则被错误地应用于目录,尝试追加.php
。它可以通过!-d
:
ErrorDocument 404 http://www.example.com/404
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]
现在,当请求/directory
这样的目录时,将使用默认的DirectoryIndex
并且不会进行重写。