.htaccess とは?
.htaccess では、Apacheというウェブサーバーの環境で、ウェブサーバーの挙動をディレクトリ単位で制御するためのファイルになります。
主な使い方としては、
・リダイレクト(別のURLへの誘導)
・アクセス制限(Basic認証や接続元のIPアドレス、ホスト名での制限)
・HTTP のレスポンスヘッダの一部設定変更
・ウェブコンテンツの挙動変更
など、さまざまあります。
さくらのレンタルサーバでは、Apacheが搭載されていますので(制限はありますが)、.htaccess での制御が可能になっています。
.htaccess の記述についてのサポートは承っていませんが、.htaccessによるアクセス制御をしたい のページに設定例が たくさん載っていますので、参考にしてください。
目次
.htaccess はどこに設置すべき?
.htaccess はディレクトリ単位でウェブサーバーの制御ができるものになりますが、もう一つ、設定する上で重要な事項があります。
それは(例外設定などしない限り).htaccess を設置したディレクトリより下の階層すべてに影響するという事です。
たとえば、~/www の中が以下のような構成だったとします。
もし、~/www 直下に、.htaccess を設置した場合は、上記全てのフォルダに設定が反映されます。
また、もし ~/www/lib に .htaccess を設置した場合、~/www/image や ~/www/admin(/includes も) には反映されず、影響するのは ~/www/lib と ~/www/lib/config のみになります。
そのため、.htaccess の設定がどこに反映されるかを認識していないと、予測しない挙動になってしまったりする事がありますので、ご注意ください。
ファイルマネージャーでの設置
ファイル、フォルダ名の先頭に[.(ドット)]が付く場合、そのファイル、フォルダは隠しファイル、あるいはフォルダに なってしまいます。
Windows などでは、デフォルトの状態ではこの隠しファイル、フォルダが表示しない設定になっており、 .htaccess を作成してそのままアップロードしようとすると、OS側で隠しファイルが表示される設定に変更しなければなりません。
しかし、.htaccess 一つのために、そのような設定を行うのはめんどくさい、という事で .htaccess はさくらのレンタルサーバの場合 ファイルマネージャーを使ってもらった方が良いと思います。
アクセス制限
さくらのレンタルサーバのファイルマネージャーには、.htaccess の設置にあたって、便利な機能があります。
それは、Basic認証の設定(パスワードによるアクセス制限)、あるいは特定のIPアドレス/ホスト名からのアクセスを遮断するアクセス制限を半自動で設定する事ができます。
アクセス制限の不具合について
アクセス制限の設定について、よくお問い合わせをいただく内容をまとめてみました。
Basic認証のポップアップが表示されない。
・以前アクセスをしたことがあるページは、ブラウザのキャッシュの問題でBasic認証のポップアップが 表示されない場合があります。キャッシュのクリアを行うか、別のブラウザからのアクセスをお試しください。
・「接続元アクセス制限との併用」で、【一方の許可があればアクセス可能】となっていた場合。 接続元アクセス制限がない、あるいは、「公開して一部のアクセスを拒否」になっていませんか。
接続元アクセス制限が有効にならない
・接続元IPアドレスの認識に相違がありませんか。VPNのサービスなどをご利用の場合は、一度切ってみてください。
・「接続元アクセス制限との併用」で、【一方の許可があればアクセス可能】となっていた場合。 Basic認証の設定が行われているか、ご確認ください。
よくある不具合
.htaccess の設定後に、構文エラーやウェブ構成上のエラーで不具合が発生する事がしばしばあります。
リダイレクトループ
リダイレクトループとは、多数のリダイレクトが存在するために、ウェブサーバー側でリダイレクトを
止めてしまう場合などに表示されます。
さくらのレンタルサーバでは、.htaccess の他にドメインリダイレクト の設定であったり、WordPress をご利用の場合は、WordPressの公開URLの設定によって、リダイレクトループが、発生するケースがあります。
.htaccess は.htaccessというファイル名を一文字でも変えたり、ファイル名に文字を追加すると機能が無効化されます。
リダイレクトループが 発生したら、まずはドメイン設定側のリダイレクトの設定無効化や、ファイル名を.htaccess.bak 等に変更して.htaccess の無効化を行ってみてください。
500(Internal Server Error)エラー
500(Internal Server Error)につきましては、.htaccess によるエラーである場合と、PHPやCGIなどの
プログラム側のエラーの可能性もあり、切り分けが難しい所であります。
そのような場合は、サイト内の画像ファイルを開いてみると問題の切り分けがしやすくなります。
画像ファイルを開いた際、画像ファイルが原因で構文エラーとなる事はないため、もし画像ファイルのみの表示でも500エラーとなる場合は、.htaccess 側に問題があると切り分けられます。
なお、さくらのレンタルサーバでは.htaccessで、許可されていない記述があります。
たとえば、Optionsの設定は可能ですが、AllおよびFollowSymlinksは指定できません。
まとめ
ウェブ構築上、なくてはならない存在である .htaccess ですが、意外と設置方法や記述方法について
ご存じ方は(HTMLやPHPほどは)多くない印象です。
今回は .htaccess って何?という、かなり初心者向けの内容になりましたが、検索していただければ
様々な使い方が紹介されているページが存在すると思いますので、よろしければ調べてみてください。