Apache 负匹配重写条件不工作

Apache 负匹配重写条件不工作,apache,.htaccess,mod-rewrite,rewrite,match,Apache,.htaccess,Mod Rewrite,Rewrite,Match,我正在尝试一个想法,并试图保持雅虎Slurp机器人在我的网站上,但重定向通过301重定向其他人。我不能得到一个否定的匹配。将Slurp发送到site2.com并将所有其他人保持在site1.com上,这样做效果很好: RewriteEngine On RewriteCond %{HTTP_HOST} site1.com$ [NC] RewriteCond %{HTTP_USER_AGENT} Slurp RewriteRule ^(.*)$ http://www.site2.com [L,R=

我正在尝试一个想法,并试图保持雅虎Slurp机器人在我的网站上,但重定向通过301重定向其他人。我不能得到一个否定的匹配。将Slurp发送到site2.com并将所有其他人保持在site1.com上,这样做效果很好:

RewriteEngine On 
RewriteCond %{HTTP_HOST} site1.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} Slurp
RewriteRule ^(.*)$ http://www.site2.com [L,R=301]
相反的情况并非如此:

RewriteEngine On 
RewriteCond %{HTTP_HOST} site1.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} !Slurp
RewriteRule ^(.*)$ http://www.site2.com [L,R=301]
用户代理是100%正确的

将所有其他人保留在site1.com上

您可以使用:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^(www\.)?site1\.com$ [NC]
RewriteCond %{HTTP_USER_AGENT} !Slurp [NC]
RewriteRule ^(.*)$ http://www.site2.com/$1 [L,R=301,NE]

您是否打算将“site2.com”放在第二个实例中,即放置site1.com的位置(最后一行)?因为这不管用,如果你这样做了。对我来说,它只是让每个人都留在site1.com上,而不考虑用户代理。但是你不想
让其他人都留在site1.com上吗?我相信你想要
如果(Slurp)=>site2.com其他site1.com
对吗?我在回答中也有我修复的打字错误。对不起,不。我想在这个页面上保留Slurp useragent,但没有其他人。它们将通过301重定向到site2.com。但对我来说,您的上述解决方案使site1.com上的每个人都可以使用,而不考虑用户代理。