web-dev-qa-db-ja.com

Apache2をサブディレクトリにリダイレクトする方法

複数の仮想ホストを使用して、Debian etchでApache2を実行しています。

リダイレクトしたいのでhttp://git.example.com に行く http://git.example.com/git/

本当にシンプルなはずですが、Googleはそれを完全にカットしていません。私はリダイレクトと書き換えを試しましたが、彼らは私が望んでいることをまったくしていないようです...

70
Hamish Downer

少しばかげた感じ-もう少しグーグルすると、私が求めていた答えが見つかりました:

RedirectMatch ^/$ /git/

基本的にルートをリダイレクトし、ルートのみをリダイレクトします。

このコードは.htaccessファイル(このためのタグがあるため、それが元の使用例であると想定しています)。しかし、編集できる場合は、メインサーバーのApache構成をWebサイトのセクションに配置し、おそらく<VirtualHost> セクション。

RedirectMatchのドキュメント は、 context は「サーバー構成、仮想ホスト、ディレクトリ、.htaccess」とすることができると言います。

115
Hamish Downer

あなたはリダイレクトでそこに正しい答えを持っています。すべてを別の場所にリダイレクトする場合は、そこに再帰的なリダイレクトを取得できるため、注意が必要です。これは、メンテナンスページを表示する場合に発生します。

3
Rory

Redirectディレクティブを使用できます。

<Directory />
   Redirect permanent / http://git.example.com/git/
   ...
</Directory>
3
Steve Chui

受け入れられた回答で問題は解決しましたが、存在しないページに404リダイレクトを追加する必要があることもわかりました-私の状況は、OwnCloudインストールがルートの1つ下のレベルにあるということです( https:// example。 com/owncloud )。

これは私にとってはうまくいき、すべてを私のサブディレクトリに送信しました:

# redirect from root to subdirectory
RedirectMatch ^/$ /thesubdirectory/

# redirect on 404 to subdirectory
ErrorDocument 404 /thesubdirectory/index.php
0
J4yne