httpd 設定の mod_rewrite ルール

httpd 設定の mod_rewrite ルール

Web ディレクトリ内のファイルが読み取られるたびに解析されるのではなく、起動時に 1 回だけ解析されるように、mod_rewrite ルールを httpd 構成のどこにどのように配置すればよいですか。

追加情報:

  • すべてのスクリプトが.htaccessファイルで動作することを前提としています
  • Apache 2.0.52 を実行する RHEL4
  • マシン上の複数のサブ/ドメイン

ありがとう

答え1

質問を理解しているかどうかわかりませんが、質問が「現在、.htaccess ファイルに書き換えルールがあり、それを Apache 構成全体に配置したい」というものであれば、<Directory /path/to/directory/where/htaccess/is>Apache 構成にディレクティブを追加し、.htaccess ファイルの内容をその中に配置する必要があります。

.htaccessが/srv/web/site1/folder1/にある場合は、Apache設定ファイルに以下を追加します。

<Directory /srv/web/site1/folder1>
Paste content of .htaccess here
</Directory>

答え2

答えはすべてここにあります。ただ、すべてがまとめられているわけではありません。

memnoch_proxy は次のように述べています:

「.htaccess ファイルで変更されたルールは、すべてのリクエストで読み取られます。/etc/httpd/httpd.conf および /etc/httpd/conf.d/* は読み取られません。service httpd reload を使用してこれらのファイルへの新しい変更をトリガーし、ワーカーに SIGUSR1 を送信して正常に再起動します。」

つまり、サイトやフォルダー構造に適用される書き換えルールを定義するために .htaccess ファイルを使用しているように思われます。

ディレクトリまたはページにアクセスするたびにルールが再読み込みされ、再解釈されるのを防ぐには、ルールを Web サイトの中央 Apache 構成ファイル内に配置する必要があります。

これらのルールの場所は、システム管理者がシステムをどのようにレイアウトしたかによって異なります。Red Hat Enterprise Linux環境では、次の名前のファイルに配置することをお勧めします。

書き換えルール.conf
にあります
ディレクトリ

Apacheのデフォルトビルドのシステムでは、これらを

confファイル
ファイルの保存場所
ローカル

答え3

httpd.conf ファイルに、「include modrewrite.conf」のような内容を追加します。次に、moderewrite.conf ファイルに書き換えルールを追加します。

また、コンパイルされていない場合は、mod_rewrite モジュールが含まれていることを確認してください。

答え4

RewriteRules は、ルールが関連するサーバー上のリソースがアクセスされるたびに処理されます。ルールが配置されている場所に関係なく、ルールは毎回解析されます。

ただし、リソース要求ごとに .htaccess がディスクから読み取られるオーバーヘッドが気に入らないという意味であれば、radius の回答が目的の回答です。ただし、.htaccess ファイルの内容をメインの Apache 構成ファイルに配置した後、.htaccess ファイルを削除するという追加の明白な指示があります。

関連情報