没有RewriteCond的htaccess RewriteRule不工作

fnk*_*nkr 4 apache .htaccess mod-rewrite fastcgi

为什么这样做:

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

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

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

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

RewriteCond %{REQUEST_FILENAME} !-l
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

anu*_*ava 5

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

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

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

(?!app\.fcgi/)如果请求已经存在,则会阻止此重写规则执行,这是一个负向预测/app.fcgi/.