普段はあまり触る機会のない.htaccessファイル。普通のサイトで普通に使うために「これ書いとけばOK」な標準的なオススメ設定をまとめました。
WWWの有無、HTTPS対応、indexから/(ルート)への書換、エラーページなど、標準的な内容を全部含めたオススメ設定です。特殊ケースでなければ、安全・正確・SEO的にも無難な設定ということで自分はこちらを常用していますので忘備録としてまとめました。
.htaccessファイルって何書いとけばいいの?
新規にサイトを立ち上げる時や、サイトを大幅に変更したときのみ、思い出したようにお世話になる「.htaccessファイル」。
WordPressでのブログ作製にももちろん必須です。
例えば「このページを変更したから、転送しないといけない」という理由と目的があれば、それに従って設定するのみです。
httpsに対応していないのが残念ですが、こんなサイトもあるようです→RewriteEngine on
しかし「普通のサイトで普通に使うには、何を設定したらいいの?」「SEOとかにも配慮した無難な設定ってどうなの?」ってのが知りたいですよね。
普通のサイトで普通に使える、標準的な.htaccessの設定とは
必要そうな物をまとめた一応全部盛りな設定になっています。とはいえ、そんな難しいことはなく設定する内容も多くありません。ごく標準的なサイトで必要最低限で十分だと思われる下記の項目を設定しています。
- WWWの有無の設定
- HTTPSの対応(httpからhttpsへの転送)
- 「ダミー.com/index.html」から「ダミー.com/」に変更(index.htmlを表示しない)
- エラーページの設定
- おまじない
各項目で何を設定しているかについては下記のとおりです。
WWWの有無の設定
諸説ありますが、SEO的にもやっておいたほうが良いといわれる内容です。
「WWW.サイト名.com」と「サイト名.com」は違うサイトと認識される、といわれています。(今ではGoogleが上手に認識していると諸説)
Google側がうまく認識してくれるといわれていますが、念の為に設定しておきます。両方のURLが存在する意味・メリットがないからです。
HTTPSの対応(httpからhttpsへの転送)
今では必須といわれているHTTPS対応に必須な作業です。
「http://サイト名.com」でのアクセスを「https://サイト名.com」に転送します。
せっかくHTTPS対応にしても、通常のHTTPでアクセスしていたら何の意味もありません。やはりしっかりと設定しておきます。新規でサイトを作成した場合でしたら、https非対応のコンテンツがあるとか、そんな心配もないはずです。新規にサイトを立ち上げるなら、必ず設定する感じでOKです。
index.htmlを表示しない設定
「サイト名.com/index.html」でのアクセスを「サイト名.com/」に転送します。
「サイト名.com/index.html」と「サイト名.com/」は違うサイトと認識される、と以前はいわれていました。これもGoogle側がうまく認識してくれるといわれていますが、2つのURLが存在する意味が無いので、しっかりと設定しておきます。
逆に必ずindex.htmlを付ける、そちらに統一するという設定も可能です。しかしあまりメリットが無いため、ほとんどのサイトがindex.htmlを無くす設定をしています。
index.htmlが付いている事自体は悪くないはずですが、リンクを張ったときにも、サイト名〜/index.htmlと(無くてもいい余分な文字で)URLが長くなり邪魔な気がします。という理由で、これも必ず設定したい項目です。
エラーページの設定
該当するページが無かった際に表示する、エラーページを設定します。たまに見かける「404エラー」という奴ですね〜
エラーページが無いのはサイトとしてどうよ??という時代ですので普通に設定が必要かと思います。エラーページのファイル名を書いてあげるだけで、超簡単です。
おまじない。セキュリティーのために
今設定している、この「.htaccessファイル」自体が改変されないように保護をかける呪文です。よく分からなければ、書いておけば間違いない、おまじないのような定文です。
分からなければこれを設定しておけばOK。無難な.htaccessの内容はこれ!
ということで、特に特殊なケースでなければこの当たりを設定しておけばOKよ!という標準的な.htaccessファイルの内容はコレ。
下記をそのまま.htaccessファイルにコピペすればOKです。もちろんダミーで入れてある「サイト名」を自分のサイト名に変更しておきましょう〜
# この.htaccessファイルを見せない設定
<Files ~ “^\.(htaccess|htpasswd)$”>
deny from all
</Files>
# 今から設定をするよという宣言
RewriteEngine on
RewriteBase /
# httpsからhttpsに転送
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://サイト名.com/$1 [R=301,L]
# wwwを無しに設定
RewriteCond %{HTTP_HOST} ^www.サイト名\.com
RewriteRule ^(.*)$ https://サイト名.com/$1 [R=301,L]
# index.htmlを/に転送
RewriteCond %{THE_REQUEST} ^.*/index.html
RewriteRule ^(.*)index.html$ /$1 [R=301,L]
# index.phpを/に転送(HTMLだけなら無くてOK)
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ /$1 [R=301,L]
# エラーページを設定
ErrorDocument 404 /error.html
index.htmlを/に転送はどっちかでOK。分からなければ両方書いといてOK。
の項目が2箇所ありますが、「index.html」と「index.php」で分けてあります。PHPを使わないよ〜HTMLファイルだけだよ!って場合はHTMLの方だけでOKです。
どちらも「index.html」「index.php」にアクセスしたら「/」(何も文字なし)でアクセスできるように指示をしています。
分からなければ上のソースのまま書いておけばOKです。PHPでもHTMLでも両方に対応できます。
バックスラッシュについて
WWWの設定のあたりに「www.サイト名\.com」という表記があります。
.comの前に入っているスラッシュみたいなの(正確にはバックスラッシュという文字=\:スラッシュとは向きが逆だよ)はちゃんと意味があります。詳しい説明は省きますが、.(ピリオド)とセットで使いますので、そのとおりに入力しましょう。
.comの場合= www.サイト名\.com
.co.jpの場合= www.サイト名\.co\.jp
仕事の後輩さんが何をやっても動かない…と、一生懸命スラッシュを打って試していたそうです。スラッシュとバックスラッシュは違う文字です!キーボードによっても違いますが「¥」(円マーク)を押すと出てくるとかと思います。エディタによっては半角の¥マークとして表示されることがあります。それでも半角でバックスラッシュであればちゃんと動きます。
富士通Q&A - コマンドプロンプトで記号の「バックスラッシュ(\)」を入力する方法を教えてください。 - FMVサポート : 富士通パソコン
最後に改行を入れとくのを忘れずに
.htaccessファイルは「最後が改行無しで終わっている」とエラーになるという不思議なルールがあります。なんで?とつまづいてしまいますが、そういう物だと思って、最後に2〜3個改行をタンタンタン〜!と入れておけばOKです。
それともちろんですがすべて半角です。動かない時、エラーになってサイトに真っ白になっちゃった!って時は、全角文字や不要なスペースが変なところに入っていないかチェック。
エラーでサイトが見えなくなってしまっても、.htaccessファイルを元に戻せばOKです。自分が編集したhtaccessファイルが原因であれば、最悪.htaccessファイルを消せば復活するはずです。焦らないでOKです。
忘れた頃にやってくる.htaccessファイルの設定
普通のサイト運営であれば、あんまり関わることのない.htaccessファイル。SEOやアクセスする人への配慮などの理由から、やはり正しい設定が必要です。
マニアックな設定などは分からなくても、最低限だけ&必要な部分だけ押さえて、マイナス要素のないサイト運営を!
以上、「これ書いとけばOK」な.htaccessファイルの標準的なオススメ設定でした。
No tags for this post.