Apache RewriteCond%{REQUEST_FILENAME}!-d不工作

我的公司网站有一些问题。 我的同事离开.htaccess文件是这样的:

 # Files in this directory will override the # controlled equivalent. # First, set up URL rewriting Options +FollowSymLinks RewriteEngine On # Forbid access to .htaccess files RewriteRule ^\.htaccess$ - [F] RewriteRule ^php\.ini$ - [F] # This Apache mod_rewrite rule checks to see # if the requested file exists as either a file # or a directory, if it doesn't then we rewrite # to the respective controlled location (unless # we're already there!). RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !^.*/_control/.*$ RewriteRule ^(.*)$ _control/$1 [L] 

一切正常,但大约一个星期前,我们的mysite.com/admin和404页面开始redirect到托pipe公司的网站。 我进一步调查,似乎问题在于最后四行。 根据格雷格的回答在这里: https : //stackoverflow.com/a/697980/1933380我改成:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !^.*/_control/.*$ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ _control/$1 [L] 

但它也不起作用。 文件夹结构如下所示:

在这里输入图像说明

我错过了什么或者犯了错误吗?

RewriteCond行与逻辑AND组合在一起,因此如果您有2个RewriteRule行,只需要将它们写两次。

我认为这一定是这样的:

  RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/_control/ RewriteRule ^(.*)$ /_control/$1 [L]