【问题标题】:mod_rewrite: Redirect if anything but a filemod_rewrite:如果不是文件,则重定向
【发布时间】:2009-09-09 11:24:28
【问题描述】:

我在父目录中有一个 Apache .htaccess 文件,该文件指向该 .htaccess 文件当前所在的目录。这可以根据需要完美地重定向所有请求。但是,我希望在此目录中如此,如果请求是针对有效文件(而不是目录),请忽略主要重写规则。

目前,以下也关闭了目录的重写,我不知道为什么。

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 Options +Indexes
 RewriteEngine On
 RewriteBase /
 RewriteCond %{REQUEST_URI} !-d
 RewriteCond %{REQUEST_URI} -f
 RewriteRule . - [L]
</IfModule>

感谢所有做出贡献的人。

【问题讨论】:

    标签: apache mod-rewrite directory


    【解决方案1】:

    尝试REQUEST_FILENAME 而不是REQUEST_URI

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule . - [L]
    

    REQUEST_URI 只包含 URI 路径,但 Apache 需要一个绝对文件系统路径来测试 -d-f。而REQUEST_FILENAME则保存着当前请求的URI对应的文件系统绝对路径。

    【讨论】:

    • 恐怕没有这样的运气。好主意,但理论上应该可行。我责怪我的托管服务提供商!
    • @mynameiszanders:尝试调查 REQUEST_FILENAME 包含哪些值。
    猜你喜欢
    • 1970-01-01
    • 2011-09-08
    • 2014-02-26
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 2011-09-28
    • 2012-10-09
    • 1970-01-01
    相关资源
    最近更新 更多