Apache-Httpd
如何在 Apache 中製定否定規則?
我有一個虛擬主機,我將其配置為將任何命中重定向到不同的站點,因此:
<VirtualHost *:80> Redirect 301 / http://other.site/ </VirtualHost>
現在我想重新配置它,它應該重定向任何命中,除了特定的虛擬目錄。直覺上,我會想到一些類似的東西:
<VirtualHost *:80> <Location ! "/subdir"> Redirect 301 / http://other.site/ </Location> ...configuration for /subdir... </VirtualHost>
它在Apache中可能嗎?據我了解它的配置,它在任何負面規則中都不是很強大。
是的,有可能。您可以將RedirectMatch與mod_alias Apache 模組一起使用,如下所示:
<VirtualHost *:80> ServerName _default_ RedirectMatch 301 ^/(?!subdir...)(.*) http://other.site/ </VirtualHost>
或者您可以使用 Apache 的mod_rewrite模組並執行以下操作:
<VirtualHost *:80> ServerName _default_ RewriteCond %{REQUEST_URI} !^/subdir... RewriteRule (.*) http://other.site/ [L,R=301] </VirtualHost>