没有RewriteCond的htaccess RewriteRule不工作

时间:2014-11-29 09:06:01

标签: apache .htaccess mod-rewrite fastcgi

为什么这样做:

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。我不希望用户能够直接访问文件。

提前致谢!

1 个答案:

答案 0 :(得分:5)

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

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

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

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