【问题标题】:htaccess RewriteEngine causing subdirectory issueshtaccess RewriteEngine 导致子目录问题
【发布时间】:2014-05-12 05:50:37
【问题描述】:

给你们一个快速的问题。我的网站基本文件结构如下:

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 的 url 打开该目录中的索引文件。这是我的万能.htaccess

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

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

编辑

所以,我在我的 htaccess 中注释掉了 3 个 Rewrite 命令,现在我的问题已经解决了。问题是现在显示 php 文件扩展名。有没有办法在不干扰默认索引页面的情况下包含重写规则?还是其他地方的问题?

【问题讨论】:

    标签: apache .htaccess hosting


    【解决方案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,并且不会进行重写。

    【讨论】:

    • 由于某种原因,这仅适用于目录和另一个根 php 文件,其他页面导致 404 错误
    • 没关系,只是因为某种原因更新了很长时间。谢谢!
    猜你喜欢
    • 2015-11-12
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多