Apacheで否定的なルールを作成する方法は?

Apacheで否定的なルールを作成する方法は?

クリックを別のサイトにリダイレクトするように設定したWebホストがあります。

<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>

関連情報