如何在Apache中制定否定规则?

如何在Apache中制定否定规则?

我有一个虚拟主机,我将其配置为将任何点击重定向到不同的站点,因此:

<VirtualHost *:80>
  Redirect 301 / http://other.site/
</VirtualHost>

现在我想以某种方式重新配置它,它应该重定向任何点击,除了特定的虚拟目录。直觉上,我会认为有些类似:

<VirtualHost *:80>
  <Location ! "/subdir">
    Redirect 301 / http://other.site/
  </Location>
  ...configuration for /subdir...
</VirtualHost>

在 Apache 中可以吗?据我了解它的配置,它在任何负面规则中都不是很强。

答案1

对的,这是可能的。您可以使用重定向匹配模组别名Apache 模块,如下所示:

<VirtualHost *:80>
    ServerName _default_
    RedirectMatch 301 ^/(?!subdir...)(.*) http://other.site/
</VirtualHost>

或者你可以使用 Apache 的模组重写模块并执行以下操作:

<VirtualHost *:80>
    ServerName _default_
    RewriteCond %{REQUEST_URI} !^/subdir...
    RewriteRule (.*) http://other.site/ [L,R=301]
</VirtualHost>

相关内容