2014-05-09 31 views
1

为你们快速的问题。我的网站的基本文件结构如下:htaccess的RewriteEngine叙述引起子目录发出

www.example.com

/

的index.php

otherFiles.php

./directory

index.php 

当前如果您要输入example.com/directory它会重定向到我的404页面。您必须输入example.com/directory/index。我的假设是,对于每个目录,默认页面为index,其中.php.html扩展名。我想我是错的,所以我配置了目录的.htaccess如下:

DirectoryIndex index.php 

但是,没有取得任何进展。有什么我失踪?为了澄清,我想要example.com/directory的URL来打开该目录中的索引文件。这里是我的万能.htaccess

ErrorDocument 404 http://www.example.com/404 

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

编辑

所以,我在htaccess的注释掉3个Rewrite命令,现在我的问题解决了。问题是,现在的PHP文件扩展名正在显示。有没有办法在不影响默认索引页的情况下包含重写规则?或者是其他地方的问题?

回答

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将被使用,不重写将会发生。

+0

出于某种原因,这只能对目录和另一根php文件,其他页面都导致404错误 – samrap

+0

没关系,它只是用了很长的时间由于某种原因更新。谢谢! – samrap

相关问题