.htaccess:存在しないURLを404ページにリダイレクトする

WEBサイトで存在しないページにアクセスすると英語の画面が表示される場合があります。

404_not_found

これは、存在しないページにアクセスした時に表示されるエラーページ(404ページ)です。
リンク切れをしていたり、URLを間違えて入力した場合などに表示されます。

上記のような英語の画面だとユーザが何のページかわからず、戸惑ってしまう可能性があります。
また、サイトから離脱してしまう可能性も出てきます。

なので、独自の404ページを用意し、ページが存在しないことをユーザに伝えることが非常に大切だと思います。

下記に.htaccessを使用し、存在しないページにアクセスした際に独自の404ページリダイレクトする方法をメモします。


.htaccessで404ページにリダイレクト

まず独自のカスタム404ページを作成します。

404.html

.htaccessに下記のコードを記述します。

ErrorDocument 404 /404.html

作成した「404.html」と「.htaccess」をドキュメントルートに設置します。

存在しないURLでアクセスし、作成したカスタム404ページが表示されればOKです。


WordPressの404ページ

WordPressで404ページを作成する場合は使用しているテーマのディレクトリに「404.php」を設置します。
.htaccessに404リダイレクトの処理を記述しなくて大丈夫です。

存在しないページにアクセスすると「404.php」の内容が表示されます。


色々なWEBサイトを見ていると404ページが設置されていないサイトが多くあると思います。
レンタルサーバだとそのサーバの404ページが表示されます。

404ページを作成することで、ページが存在しないことのメッセージをユーザに伝えることができます。
404ページにサイト内検索やTOPページへのリンク、サイトマップなどを記述することでユーザビリティの向上につながります。
また、SEO的にも有効だと思います。

ショップサイトなどでは、商品が売り切れになってページがなくなることがあると思うので、
新着商品やおすすめ商品などの紹介をするのもいいかもしれません。

ぜひチェックしてみてください。

.htaccess:トップページ以外のアクセスをリダイレクト

WEBサイトを構築している時にトップページ以外アクセスを拒否したい場合があります。
サイトの引越しやサイトの閉鎖などの時も必要になるかもしれません。

.htaccessを使用すれば、トップページ以外の下層ページにアクセスがあった場合、
トップページリダイレクトさせることが可能です。

下記に.htaccessを使用し、下層ページアクセストップページリダイレクトさせる方法をメモします。


トップページ以外のアクセスをリダイレクト

ドキュメントルートに.htaccessを設置します。
下記の内容を.htaccessに記述します。

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/$)
RewriteRule ^(.*)$ / [R=301,L]

トップページのアクセスをリダイレクトさせない為に、
下記を記述しています。
無限ループさせないように「トップページではない場合」
という条件を指定しています。

RewriteCond %{REQUEST_URI} !(^/$)

また、画像やCSSを使用する為、一部のディレクトリを許可したい場合は、
下記のように記述します。
※「image」、「css」ディレクトリを許可する場合

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/$)
RewriteCond %{REQUEST_URI} !(^/image/)
RewriteCond %{REQUEST_URI} !(^/css/)
RewriteRule ^(.*)$ / [R=301,L]

下記の条件を追加しています。

RewriteCond %{REQUEST_URI} !(^/image/)
RewriteCond %{REQUEST_URI} !(^/css/)

.htaccess:Basic認証の記述方法と説明

Basic認証について、色々調べたので記述方法簡単な説明をメモします。

すぐ忘れてしまうので。

Basic認証を作成するツールは色々あります。
私は下記のサイトを使用して「.htaccess」と「.htpasswd」を作成することが多いです。
こちらを使えば簡単にパスワードを作成することができます。

http://www.htaccesseditor.com/#a_basic

下記にBasic認証書き方設定内容の説明を記述します。


Basic認証を設定する時の.htaccessの書き方

※例です。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
order deny,allow

Basic認証 設定内容の説明

Files

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>

「.htaccess」と「.htpasswd」を見せないようにする為の指定です。
記述しなくてもいいのですが、パスワードファイルをドキュメントルート以下に置く場合は参照されないように記述した方がいいと思います。

AuthUserFile

AuthUserFile /home/hoge/html/.htpasswd

.htpasswd(パスワードファイル)までのパスを指定します。
パスはサーバのフルパスを記述します。

AuthGroupFile

AuthGroupFile /dev/null

グループファイルを指定する時に使用します。
グループを使用しない場合は「/dev/null」を記述します。

AuthName

AuthName "Please enter your ID and password"

認証時のダイアログボックスに表示する文字列を記述します。

AuthType

AuthType Basic

認証の方法です。
Basic認証の場合は「Basic」を記述します。

require

require valid-user

認証するユーザを指定します。
全てのユーザにアクセスを許可する場合は、「valid-user」を記述します。


.htaccess:Basic認証を特定のファイルに設定

Basic認証を使用してアクセス制限をかける時に特定のファイルのみにアクセス制限を設定したい場合があります。

ディレクトリごとBasic認証をかける場合は「.htaccess」をアクセス制限をかけるディレクトリに設置すればいいのですが、
ディレクトリ内の全てのファイルが対象となってしまいます。

ディレクトリ内一部のファイルのみにアクセス制限を設定したい場合は、下記のように記述します。


Basic認証を特定のファイルのみに設定

※下記「test.php」ファイルにBasic認証を設定する場合

ディレクトリ内のファイル一覧

.htaccess
.htpasswd
index.php
hoge.php
test.php

.htaccess

「Files」で「test.php」を指定すれば、「test.php」にBasic認証かけることができます。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
<Files test.php>
require valid-user
</Files>

複数ファイルを指定したい場合は下記のように記述します。

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
order deny,allow
<Files ~ (hoge.php|test.php)>
require valid-user
</Files>

「*」を使用してワイルドカードで指定することも可能です。


一部のファイルだけアクセス認証(Basic認証)をかけたい場合に良いと思います。

.htaccess:Basic認証で複数アカウントを登録

WEBサイトを制作していると公開前の場合など、アクセス制限をかけることが多いと思います。
また、特定の人にのみ参照可能にするページを作成する場合があります。

Basic認証ベーシック認証)をかければ簡単に認証機能を付けることが可能です。

Basic認証は複数アカウントを設定することができ、アカウントごとにIDとパスワードを設定することができます。
下記にBasic認証複数アカウント登録する方法をメモします。


Basic認証で複数アカウントを登録

「.htaccess」にBasic認証を設定します。
※「AuthUserFile」に「.htpasswd」までのパスを記述します。

.htaccess

<Files ~ "^\.(htaccess|htpasswd)$">
deny from all
</Files>
AuthUserFile /home/hoge/html/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user 
order deny,allow

複数アカウント登録する場合はアカウントごとに改行して記述します。

.htpasswd

test:Qc1I4UTNjzXEA
hoge:o4QIJGcEe6SXs

Basic認証で複数のアカウントを登録することはあまりないと思いますが、
改行して記述すれば複数アカウントを登録することが可能です。