Help us understand the problem. What is going on with this article?

Webデザイナーがサイトを作る時、いつも.htaccessに書いていること

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なしに書き換えます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away