Apache-Httpd

如何在 Apache 中製定否定規則?

  • April 22, 2017

我有一個虛擬主機,我將其配置為將任何命中重定向到不同的站點,因此:

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

現在我想重新配置它,它應該重定向任何命中,除了特定的虛擬目錄。直覺上,我會想到一些類似的東西:

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

它在Apache中可能嗎?據我了解它的配置,它在任何負面規則中都不是很強大。

是的,有可能。您可以將RedirectMatchmod_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>

引用自:https://unix.stackexchange.com/questions/360312