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


66

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

私はリダイレクトするようにhttp://git.example.comに行きますhttp://git.example.com/git/

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


これにアプローチする方法はたくさんありますが、まさに達成しようとしているのは何ですか?
WerkkreW

回答:


111

少し愚かな感じ-もう少しグーグルで答えを見つけた:

RedirectMatch ^/$ /git/

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

このコードは.htaccessファイルで実行できます(このタグがありますので、これが元のユースケースであると想定します)。しかし、メインサーバーのApache設定を編集できる場合は、おそらく<VirtualHost>セクション内のWebサイトのセクションに配置してください。

RedirectMatchドキュメントでは、コンテキストは「サーバー構成、仮想ホスト、ディレクトリ、.htaccess」にできると述べています。


2
では、このコード行をどこに置くのでしょうか?
user230910

これを機能させるには、完全なURI(https://example.com/git/)を入力する必要がありました。奇妙な。
マットM

3

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


4
確かに。Redirect / /git/再帰的な花火が発生します。
デイヴァージョシポビッチ

3

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

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

0

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

これは私のために働いて、サブディレクトリにすべてを送信しました:

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

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

2
ErrorDocumentは、有用なドキュメントではなく、エラーページを返す必要があります。これはクローラーにとって重要です。
ジョナベントン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.