これだけは抑えたい「.htaccess」3種のまとめ

       
これだけは抑えたい「.htaccess」3種のまとめ

お茶の間のみなさん、名も無い離島からこんにちは!内藤です。
突然ですが、.htaccess活用していますか?!利用できる安いレンタルサーバもけっこうあると思います。そこでとりあえずこれだけ丸暗記しておけば、最低限大丈夫!と思える3つをご紹介します~。




今後のウェブサーバはIISが主流になっていくのでは、という説もあるのですがこの記事ではapacheを想定しています。
自前で無いIISで痛い目にあったことがあるので、古いIISレンタルサーバで困っている方は「ISAPI_Rewrite」というキーワードか、もしくはここらへんが参考になるような気がします。

Basic認証

basic認証

例えば構築中のサイトなどで簡単なパスワード認証をかけたいときなどによく使う、Basic認証です。上のような画面、時々見かけませんか?
この仕組みには、2つのファイルが必要です。

  • .htaccessファイル(名前はこの名前でなければダメ)
  • .htpasswdファイル(違う名前でも可)

.htaccessファイルは、サーバの挙動を定義するファイルで、こちらで「.htpasswdというファイルにあるID/PWでBasic認証するよ」という命令を書きます。
.htpasswdファイルは、ユーザ名とパスワードを定義するファイルです。

apacheの場合の.htaccess記述例

AuthType Basic
AuthName "Input your ID and Password."
AuthUserFile /home/ドメイン名/フォルダ名/.htpasswd
require valid-user

■英語一口メモ:Authはauthorize(~に許可を与える)という動詞の略ですねー。語源は、著作者を現すauthorと同じなんですよ~。

AhthUserFileのところに、ユーザ名とパスワードを記述したファイルのフルパスを書く必要があるのですが、レンタルサーバなどでドキュメントルートが分からない場合があるんです。
その際にお世話になれるのがこちら。今や時の人、日本のHTML5の草分け的存在の羽田野太巳さん作サーバアナライザー
羽田野さんはとてもお話も上手ですし、腰も低くて素晴らしい方なんですが、こういう地味に便利なツールを無料公開してくださっています。

futomi s CGI Cafe   サーバーアナライザー 1.1

設置して、Document Rootのところを見るとわかりますので便利です。

.htpasswdの方の記述

.htpasswdの方では、暗号化したパスワード記述が必要なのですが、これが簡単に作れるwebツールがあるのでご紹介します。
ルフトツールズさんです。

htpasswdファイル生成 作成

一部だけSSL適用

例えばコンタクトページのみhttpsにしたい場合ですが、通常のサイトであれば.htaccessだけでも可能です。

SSLにしたいディレクトリに置く.htaccess

RewriteEngine on
RewriteCond %{REQUEST_URI} .*/contact.html$ [OR]
RewriteCond %{REQUEST_URI} .*/contact2.html$
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_URI} !(.*/contact.html$)
RewriteCond %{REQUEST_URI} !(.*/contact2.html$)
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

SSLにしたくないディレクトリに置く.htaccess

RewriteEngine on
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

画像・CSS・jsのディレクトリには

RewriteEngine off

■英語一口メモ:RewriteCondのCondは、condition=条件の略だと思われます(違ったらすみません)。でもほら、そう覚えると納得しません??

同一ディレクトリの場合

こんな感じ?間違えていたら教えて下さい。

RewriteCond %{REQUEST_URI} .*/contact1.html$ [OR]
RewriteCond %{REQUEST_URI} .*/contact2.html$ [OR]
RewriteCond %{REQUEST_URI} .*/(.*).css$ [OR]
RewriteCond %{REQUEST_URI} .*/(.*).js$ 
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

RewriteCond %{REQUEST_URI} !(.*/contact1.html$)
RewriteCond %{REQUEST_URI} !(.*/contact2.html$)
RewriteCond %{REQUEST_URI} !(.*/(.*).css$)
RewriteCond %{REQUEST_URI} !(.*/(.*).js$)
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [R,L]

WordPressで一部(特定のページ)だけSSL化

.htaccessだけではもはやどうにもなりません。
WordPress HTTPS (SSL)というプラグインを入れましょう。

リダイレクト

ドメインを引越すときなどに使う永久的リダイレクト(俗に言う301リダイレクト)と、サイト構築中など一時的に他の場所にリダイレクト(俗に言う302リダイレクト)があります。

301リダイレクト

サイト全体を違うドメインに移動させる場合は下記の記述によって検索エンジンに、ページ移転を知らせ、検索結果のリンクを変更してもらうことができます。

Redirect permanent / http://example.com/

もしくは、こんな書き方でも。

RedirectMatch 301 .* http://example.com/

一部のディレクトリだけ独立させて別サイトに移動させる場合など。

Redirect permanent /shop/ http://exampleshop.com/

302リダイレクト

一時的に仮サイトなどに待避している場合などは、302リダイレクトを使い検索エンジンにはリンク先を変えないようにしてもらえます。

Redirect temp /shop/ http://example.com/shopping/

以下を参考にさせていただきました!ありがとうございます!
grush-blogさん
CMAN インターネットサービスさん

IISでの記述などちょっと端折ったところも多いのですが、とにかく使って便利な.htaccessは奥が深いので、今回のものだけでも覚えておくと楽になると思います。是非ご活用ください。

あっ。もし、もし間違えがあったらご指摘ください。



英作文のフルーツフルイングリッシュ