質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

Q&A

2回答

4094閲覧

リライト設定を記載する場所について

tk_flavor

総合スコア104

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

0グッド

0クリップ

投稿2016/07/29 10:55

リライト設定について質問します

htaccessはhttpd.confより動作的に強い事は知っていますが
リライト設定をhttpd.conf、htaccessのどちらに記載した方がいいでしょうか

ドキュメントルート以下にapcアクセス用のリライト設定とindex.phpへのアクセス用のリライト設定が
されているhtaccessがある場合、別なリダイレクト設定をhttpd.confに記述した時と既存のhtaccessに追記
した場合の違いはどのような事が考えられますでしょうか

たとえば、新規で追加したリライトが正常に作動しないなど。。

htaccessへ追記、httpd.confに追記した2パターンで検証しましたが
特にアクセス時に不具合は見られませんでした。

既存のhtacessには下記のものが記載されているとします

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.$ - [NC,L]
RewriteRule ^.
$ index.php [NC,L]

RewriteCond %{REQUEST_URI} ^/apc.php
RewriteCond %{REMOTE_ADDR} !^192.168.16[123].[0-9]+$
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteRule ^.*$ - [R=404,L]

RewriteCond %{REQUEST_URI} ^/server-status$
RewriteCond %{REMOTE_ADDR} !^127.0.0.1$
RewriteRule ^.*$ - [R=404,L]

RewriteCond %{REQUEST_URI} ^/server-status$
RewriteRule ^.*$ - [L]

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

すでに紹介されているリファレンスにも記述がありますが、
以下の理由により、サーバー設定ファイル(httpd.conf等)を利用するのが望ましいでしょう。

  • 分散設定ファイル (.htaccess) は、アクセスのたびに、対象となるすべての上位ディレクトリーの.htaccessを探すためパフォーマンスが落ちる(サーバー設定ファイルはApache再起動時に1度ロードされるだけ)
  • 分散設定ファイルは、ドキュメントルート内の書き込み権限のみで変更可能なため、セキュリティが低下する
  • 分散設定ファイルは即時反映されるため、シンタックスの事前確認ができない

上記のデメリットがあまり影響しない場合は、以下の理由により分散設定ファイル (.htaccess)を利用する方が望ましいかもしれません。

  • Apacheの再起動が不要
  • ドキュメントルート内の書き込み権限のみで変更可能

また、リライト設定特有の問題として以下の記事が参考になるかもしれません。
http://hole.sugutsukaeru.jp/archives/187

サーバ設定ファイル(httpd.conf)では URL 書き換え先にファイルシステム上のパスを指定できるが、.htaccess ではできないという事。また別の言葉では、.htaccess での書き換え先パス指定は常に URI として解釈されるという事。

投稿2016/08/16 07:19

bezeklik

総合スコア580

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

公式には、できるだけサーバー設定ファイル(httpd.conf)に書くべきとドキュメントにあります。
以下に一部抜粋しておきます。

いつ .htaccess ファイルを使う(使わない)か。

一般的に、サーバの主設定ファイルにアクセスできない場合を除いて、 .htaccess ファイルの使用は極力避けてください。 世の中には、例えば、ユーザ認証は常に .htaccess ファイルで 行なわなければならない、という誤解が広まっていますが、まったくそんなことは ありません。ユーザ認証の設定はサーバ主設定ファイルに書くことができ、 実際、その方がより良い設定方法です。

Apache チュートリアル: .htaccess ファイル

投稿2016/07/29 13:40

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問