htaccess RewriteEngine导致子目录问题

时间:2014-05-09 06:53:21

标签: apache .htaccess hosting

快问你们。我的网站的基本文件结构如下:

  
    

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文件扩展名。有没有办法在不干扰默认索引页面的情况下包含重写规则?或者是其他地方的问题?

1 个答案:

答案 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并且不会进行重写。