web-dev-qa-db-ja.com

htaccessとhttpd.conf?

Httpd.confを使用できるのであれば、htaccessファイルを使用すべきではないというのはまだ本当ですか?

Apacheサイトには、「一般に、メインサーバーの構成ファイルにアクセスできない場合を除いて、.htaccessファイルを使用しないでください」と書かれています。しかし、私はそのアドバイスが何歳であるか、またはそれがまだ関連しているかどうかはわかりません。

Httpd.confファイルのみを使用する大規模なサイトで作業しています。しかし、それは非常に長くなっており、もちろん、変更が加えられるたびに再起動する必要があります。また、メインサイトの下で実行されている(そしてすべてhttpd.confファイルを使用している)部門サイトの数が多いため、変更を加えることは阻害要因になります。

現在、wordpress 3(マルチサイト構成)も実行しています。構成ルールへの変更をテストしたいのですが、現在できる唯一の方法は、Apacheを再起動し続けることです。これはライブサイトではやりたくないです(特に、一部のブログ投稿の前に「www。」が付いているものとそうでないものがある場合、書き換えルールは誤動作しているようです)

wordpressフォルダーで.htaccessを有効にすることを検討していましたが、賢明ですか?

私たちのサーバーはビジーです(グーグルによると、1日あたり約60kページビュー)が、それほど厳しく課税されていません。

現在のベストプラクティスは何ですか?サーバーは、.htaccessファイルの管理のしやすさに比べて、わずかなパフォーマンスの低下が無視できるほど十分に汚れていますか?

5
nedlud

しかし、それは非常に長くなっており、もちろん、変更が加えられるたびに再起動する必要があります。

長さが問題になる場合は、構成セクションを分割し、代わりに Include ディレクティブを使用することを検討してください。他の人が言っているように、httpd構成を 'reload'または 'restart' でリロードすることは可能であり、これによりユーザーの混乱を減らすことができます。 「reload」または「graceful」を使用するように管理者をトレーニングする必要があります。これは、簡単に言うと実行できます。多くの人はこれらのコマンドについて知らず、一部の人はそれらを信頼していません。

.htaccessファイルが悪と見なされる理由は次のとおりです。

  1. .htaccessファイルは混乱を引き起こします。私はかつて、ディレクトリ階層全体に50を超える.htaccessファイルがあるサイトを継承しました。このファイルは、6年前に数十人の異なる人々によって作成されました。特定のディレクトリの「サーバー構成」、または特定の機能が特定のディレクトリで機能しなかった理由を理解することは非常に困難でした。

  2. セキュリティ:.htaccessファイルに書き込むことができるすべてのユーザーは、使用可能なオプションを AllowOverride で制限するように注意しない限り、httpd.confに設定した慎重に考え抜かれた設定の一部を上書きできます。詳細については、。htaccessファイルを使用する(しない)場合を参照してください。

  3. 監査:メインのhttpd.confおよびInclude'dディレクトリの構成管理を簡単に作成できます。これにより、誰が何をしたかについての優れた監査証跡が提供されます。構成ファイルがディレクトリ階層全体に分散している場合、構成管理を実装するのはより困難です。

  4. 制御不能:誰かが.htaccessファイルを作成し、あなたに通知しない可能性があります。誰かが金曜日の午後5時にこれを行ったふりをして、間違ったことをしてたくさんのページを壊したmod_rewriteルールを追加し、その人は週末に出発しました。あなたは月曜日まで問題を発見しません。

.htaccessファイルがほんの一握りであり、それぞれの目的が十分に理解されている場合、.htaccessファイルが理にかなっている場合が確かにあります。

6

.htaccessファイルの欠点は、リクエストごとにファイルをロードする必要があることです。したがって、オーバーヘッドが追加されます。すべてのルールがconfファイルにある場合、Apacheのロード時にルールがロードされ、それだけです。したがって、サイトのファイル数が60K少ない場合は、読み取る必要があります。さらに、前処理できるルールはありません。これにより、応答が遅れる可能性があります。今日、ディスク速度とプロセッサとRAMは豊富で高速ですが、ほとんどのサイトでその影響はほとんど目立たないと思います。

Crimson_penguinが言ったように、Apacheに再起動せずに設定ファイルを再読み込みさせる理由があります。ほとんどのOSは、再起動の代わりにreloadコマンドを使用してこれを実行します。 Apache2ctlコマンドを使用する場合は、Apache2ctl gracefulを実行し、最初にApache2ctl configtestを実行して、すべてが正常であることを確認できます。もちろん、これをrootとして実行する必要があります。

1
Ryan Gibbons

.htaccessは、適用されるたびに解析されます。これにより、サーバーに小さいながらも不要な負荷がかかります。 confファイルは、サーバーがロードまたはリロードされたときにのみ解析されます。

.htaccessの使用は、confファイルで有効になっているアクセスによって異なります。

.htaccessを使用すると、コンテンツディレクトリを作成できるすべてのユーザーがそのディレクトリのセキュリティ設定を上書きできるため、管理者はセキュリティをあまり制御できなくなります。 (この機能を制限する構成オプションがあります。)多くのシステムでは、Webサーバー自体がコンテンツディレクトリに書き込む可能性があり、サーバーが危険にさらされた場合の潜在的な損害を増大させます。

使用する Apache2ctl gracefulWebサーバーの再起動を置き換えます。 HTTPSサービスを実行している場合は、WebサーバーによるSSLキーへのアクセスを構成できます。

1
BillThor