我有一个虚拟主机,我将其配置为将任何点击重定向到不同的站点,因此:
<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>