Webサイトを制作していると、.htaccessというファイルを一度は耳にしたことがあるのではないでしょうか?
でも、プログラミングなんてよくわからないし、ググった検索結果をコピペして動けばいいや!と思っていませんか?
今回はそんな方のために、.htaccessファイルの読み方、よくある書き方について見ていきましょう。
そもそも.htaccessファイルって何?
Webサーバーの基本的な動作を設定するためのファイルです。
主な用途として、
- URLを変更
- サイトを別ドメインへ飛ばす(リダイレクト)
- 404 Not Foundのページに飛ばす
- アクセス制限(IPアドレスでの制限やパスワード認証をかけるなど)
といったものがあります。
.htaccessでよく使う書き方
次に、.htaccessでよく使われる書き方について見ていきます。
これを使えばWeb制作が少し楽になるかも。
※書き方によってはサイトが表示されなくなったり上手くアクセスできなくなる場合もあるので、しっかりバックアップを取った上で自己責任でお願い致します。
WordPressのサイトを移行する
WordPressサイト全体を新ドメインに移行したい時に、お引越しできれば一番良いのですが様々な事情でそれができない場合があります。
そんな時に、元サイトのhtaccessファイルを変更することで、新サイトへ飛ばすことが可能です。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ https://new-site-domain.com/$1 [R=301,L]
</IfModule>
https://new-site-domain.comの部分を移行したいサイトのドメインに設定してください。
R=301の部分は「恒久的なリダイレクト」を意味するもので、元サイトのSEOの評価を新サイトに引き継ぐことができます。元サイトのSEOの評価を引き継ぎたい場合にはこの施策を行うと良いでしょう。
HTTPをHTTPSに
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
よく出てくる構文の意味とは?
書き方はわかったけれど、記述の意味を知りたい!という方に、その構文の意味について簡単に説明します。
IfModule mod_rewrite.c
<IfModule mod_rewrite.c>
</IfModule>
IfModuleで囲まれている部分は、mod_rewrite(URLを書き換えするシステム)が有効になっている時に実行される部分です。
mod_rewriteを有効にするには、「RewriteEngine on」を記述する必要があります。
RewriteEngine on
RewriteEngine onは、mod_rewrite(URLを書き換えするシステム)を有効にしますよという記述です。
RewriteCond
RewriteCondは、URLを書き換えるための条件を指定する記述です。(CondはConditionの意味ですね)
RewriteRule
RewriteRuleは、URLをどう書き換えるかを記述するものになります。
この中でよく以下の記述を見かけることが多いかと思います。
^(.*)$
これは顔文字ではなく笑、全ての文字列(URL)を意味しています。
- 「^」:文字の先頭を指す
- 「$」:文字の終端を指す
- 「.」:任意の文字列
- 「*」:0回以上の繰り返し
という意味になっていて、全ての文字列を表現しているんだなと理解して頂ければと思います。
R=301
よく [R=301,L]という記述を見かけるかと思いますが、[ ]で囲まれた部分はフラグと呼ばれるものです。フラグとは、状態を判断するために使われるもので、URLを書き換える際の追加オプションのようなものと考えると良いかと思います。
そのフラグの1つであるR=301は、
301 リダイレクト(恒久的なリダイレクト)をしますよ
というフラグです。
リダイレクトとはURLを自動的に転送する仕組みのことで、
恒久的なリダイレクトとは、未来永劫ずっとリダイレクトしますよという意味になります。
先ほども少し述べましたが、これをするとSEOの観点でメリットがあります。
元のURLのSEOの評価を新しいURLに引き継げることです。
例えば、元のサイトのURLが検索上位にあった場合。
何もしていなければ新サイトは中々検索されませんが、
元サイトから301リダイレクトをしている場合、
原理上検索上位に上がってくるようになります。
L
よく使われるもう1つのフラグのLの意味は、「Last (最後)」という意味です。
[L]があって複数行のRewriteRuleがある場合、RewriteRuleにマッチした行であれば[L]が書かれた行で処理を終了します。
[L]の記載がない場合は、次にマッチするRewriteRuleが適用される感じになりますね。
参考:http://htaccess.goodhead.work/pages/2779
#BEGIN WordPress、#END WordPress
WordPressに配置されている.htaccessファイルを見てみると、何やら#BEGIN WordPressと#END WordPressという記述で囲まれていますね。
何かの処理をしているかというと、実はそうではないです。
これはコメントと呼ばれるもので、メモみたいなものになります。
「ここはWordPressに関する.htaccessの記述ですよ」ということを人が見た時にわかりやすく明示するために書かれているので、例えその行を削除したとしても動作上は差し支えないです。
まとめ
.htaccessは深く理解するまで時間がかかるかもしれませんが、よく使うものだけであれば実務ではまり問題にならないのではないかと思います。
.htaccessについて少し理解が深まって頂ければ嬉しいです。
コメント