回答:
Include
ディレクティブを使用しhttpd.conf
て、別のファイルでリダイレクトを維持できます。しかし、多くの正規表現に対してすべてのリクエストをチェックする必要があるため、あまり効率的ではありません。また、ファイルを変更するたびにサーバーの再起動が必要になります。
非常に多くのリダイレクトのより良い方法は、タイプのRewriteMapディレクティブを使用dbm
して、URIからリダイレクトへのマップを宣言することです。この方法では、dbmルックアップが非常に高速であり、マップを変更した後、httpd
マップファイルの変更時間をチェックするため、サーバーを再起動する必要がないため、効率的です。
書き換えルールは次のようになります(私のFedora 16コンピューターでテスト済み):
RewriteEngine On
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
RewriteCond ${redirects:$1} !=""
RewriteRule ^(.*)$ ${redirects:$1} [redirect=permanent,last]
また、dbmマップは次の/etc/httpd/conf/redirects.txt
ようなテキストマップから作成されます。
/foo http://serverfault.com/
/bar/lorem/ipsum/ http://stackoverflow.com/
コマンドを使用する
httxt2dbm -f db -i /etc/httpd/conf/redirects.txt -o /etc/httpd/conf/redirects.db
!=
との間にスペースを入れることができないため、Httpdは起動しませんでした""
。現在、動作するテスト済みのバージョンにサンプルを修正しました。
RewriteMap redirects dbm=db:/etc/httpd/conf/redirects.db
エラーを与えましたRewriteMap dbm type db is invalid
。しかし、私が使っRewriteMap redirects txt:/etc/httpd/conf/redirects.txt
たときはうまくいきました。プレーンテキストではなく、あなたが説明したように、私はまだハッシュされた方法で行きたいです。しかし、dbmエラーについてはあまり見つけることができませんでした。ご協力いただきありがとうございます。
リストからのリンクだけで新しいVHOSTを生成するスクリプトを作成します。