LoginSignup
7
5

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-11-18

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

7
5
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
7
5