【问题标题】:htaccess RewriteRule without RewriteCond not working没有 RewriteCond 的 htaccess RewriteRule 不起作用
【发布时间】:2015-01-27 19:40:00
【问题描述】:

为什么会这样:

Options +ExecCGI
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app.fcgi/$1 [L]

但是如果我远程RewriteCond 它不起作用并且我得到一个内部服务器错误。

Options +ExecCGI
AddHandler fcgid-script .fcgi
RewriteEngine On
RewriteRule ^(.*)$ /app.fcgi/$1 [L]

如果我修改 RewriteCond 例如像这样它也不起作用。

RewriteCond %{REQUEST_FILENAME} !-l

我想将所有请求重定向到 app.fcgi。我不希望用户能够直接访问文件。

提前致谢!

【问题讨论】:

    标签: apache .htaccess mod-rewrite fastcgi


    【解决方案1】:

    它给你内部服务器错误 (500) 因为没有RewriteCond 你的循环是无限循环的。

    您可以使用此规则来防止这种情况:

    Options +ExecCGI
    AddHandler fcgid-script .fcgi
    RewriteEngine On
    RewriteRule ^((?!app\.fcgi/).*)$ /app.fcgi/$1 [L,NC]
    

    (?!app\.fcgi/) 是一个否定前瞻,如果请求已经是/app.fcgi/,则阻止此重写规则执行。

    【讨论】:

    • 谢谢,它有效!为什么要添加 nocase 标志 (NC)?重要吗?
    • NC 实际上在这里并不重要。只是我在模式中使用了(?!app\.fcgi/),您可能还想匹配(?!APP\.fcgi/)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    • 2012-12-10
    • 1970-01-01
    相关资源
    最近更新 更多