Webデザイナーのあやおり子です。
Webページを作成する時は、必ずと言ってもいいほど.htaccessを設定しています。
今回は、サイトを作る時にいつも.htaccessに書いてあることを紹介します。
前提
-
# ~
と書いてある行はコメントアウト(.htaccessの仕様) - 直書き(スクラッチ)で作る※WordpressなどのCMSにすると、プラグインやサーバー・CMSの仕様によって記述内容を調整する必要があるため)
- 新規サイト
記述コード全て
# XAMPPの権限対策
# Options Indexes MultiViews FollowSymLinks
# ページがなかった場合、リダイレクト
ErrorDocument 404 /404
# Basic認証
AuthType Basic
AuthName "Input your ID and Password."
# AuthUserFile テスト環境絶対パス
AuthUserFile 本番環境絶対パス
require valid-user
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# 拡張子省略
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1\.php
# SSL設定
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
# www設定
RewriteCond %{HTTP_HOST} ^www.サイト名.com
RewriteRule ^(.*)$ https://サイト名.com/$1 [R=301,L]
</IfModule>
解説
一文ずつ解説していきます。
XAMPPの権限対策
# Options Indexes MultiViews FollowSymLinks
私のXampp設定が悪いんだと思うのですが...
この文章を書かないと、私のローカル環境が表示されません!!
本番に上げる時はコメントアウトしており、
テスト環境の時はコメントアウトを外しています。
ページがなかった場合、リダイレクト
ErrorDocument 404 /404.php
ページがなかった場合に表示される404ページを指定します。
この場合、(サイトドメイン/404.php
)がリダイレクト先です。
LPでしたら、トップページを指定してもいいかもしれません。
Basic認証
AuthType Basic
AuthName "Input your ID and Password."
# AuthUserFile テスト環境絶対パス/.htaccess
AuthUserFile 本番環境絶対パス/.htaccess
require valid-user
私の場合、コーディングの8割が新規サイトですので、ベーシック認証は必須です。
.htaccessの場所を絶対パスで記述します。
書き換え設定
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
設定したい項目を書く
</IfModule>
<IfModule mod_rewrite.c>
の中に書いてあるのは、
もし書き換えが可能だったら場合に実行する項目のこと。
以下が<IfModule mod_rewrite.c>
に記述する項目です。
拡張子省略
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.+)$ $1\.php
Wordpressではなく直書きで書く場合は、
何も設定しない場合サイトドメイン/ファイル名.php
が標準のURLとなります。
しかし、ファイル名.phpと毎回書くのもめんどくさいし、急に「CMSに変えたい」と言われた時に対応出来ません。
この記述を加えることで、サイトドメイン/ファイル名
で表示されるようになり、リンクが楽になります。
直書きだと分かりづらくなるので、セキュリティ的にも向上するんじゃないのかなーとも思います。
なお、この記述がある上でサイトドメイン/ファイル名.php
と入力してすると、
サイトドメイン/ファイル名
にリダイレクトされます。
私の会社ではPHPファイルしか使わないのですが、HTMLファイルも扱う場合は、
上記ファイルの'.php'を'.html'に変えたものを追記する必要があると思います。
SSL設定
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
HTTPでアクセスされたものをHTTPSにリダイレクトします。
www設定
RewriteCond %{HTTP_HOST} ^www.サイト名.com
RewriteRule ^(.*)$ https://サイト名.com/$1 [R=301,L]
www付きでアクセスしてきた場合、wwwなしに書き換えます。