1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

.htacess の勉強メモ

Posted at

.htacessでできること

  • ベーシック認証
  • 301リダイレクト
  • URLの正規化
  • ファイル一覧表示の中止
  • 特定のIPアドレスやドメインからのアクセス制限

基本

・.htaccessでのリダイレクト処理は、Apacheで使用できるモジュールの1つ。
・mod_rewriteモジュールを使用する。

  <IfModule mod_rewrite.c>
      mod_rewriteが有効な場合だけ実行する処理をここに記述します
  </IfModule>

mod_rewriteで使用するディレクティブ(命令文)

RewriteEngine

  • mod_rewriteを有効にするか無効にするかを宣言できる。

RewriteRule

  • どのように書き換えるのかを指定できる。
    RewriteRule {パターン} {置換内容}の形式をとり、{パターン}に一致したものを{置換内容}に書き換えます。[R]というフラグと併用(後述)し、リダイレクトを実行する。

RewriteCond

  • どんな場合にリライトするかどうか、条件を指定できる 。
    RewriteCond {条件}の形式をとります。RewriteRuleの前に記述。

Options -Indexes

  • ファイル一覧を表示しないようにする

フラグについて

  • RewriteRule の設定行に追加できるオプション
  • 基本的には、[R=301]、[R=302]のどちらかを設定します。( [R] と省略すれば [R=302] と同義です。)
  • 301:恒久的なリダイレクト。検索エンジンが引っ越しと認識する
  • 302:一次的なリダイレクト。検索エンジンが(すぐには)引っ越しと認識しない

[L]

  • このフラグがあれば、この行でRewriteRule にマッチした場合、次の行に進むことまずに、その時点で処理を停止します。
    逆に、このフラグを忘れていて、次の行に別の RewriteRule 設定がまた記載されていれば、せっかくマッチしたリダイレクト先のURLが再度書き換えれてしまいます。
    また、上記の [R] フラグを利用するときは、必ず[L] を併記する必要があります(そうでない場合、エラーが発生していまいます)
    結果的に、RewriteRule を記載した行は、[R=301,L] と行末に記述することになるはずです。

例1 :単純にドメインが変わるだけ(ディレクトリ構造そのまま)の引っ越し

例えば、example.com のドメインを、https://new-example.com へとリダイレクトしたいような場合。
example.com直下の.htaccessファイルに以下を記述

  <IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^(.*) https://new-example.com/$1 [R=301,L]
  </IfModule>
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?