.htaccess

.htaccess

レンタルサーバーならではの自由度。お好みの設定にカスタム

■機能対応表
ARS201 ARS202 ARS203 ARS204 ARS205 NSO201

※一部制限される機能がございます。また、「RewriteEngine」を使うには弊社ではARS202以上からとなります。

ファイルやディレクトリーの制御は、ファイルマネージャだけではできないこともございます。アスカレンタルサーバーでは、「.httaccess」がご利用いただけますので、より詳細に設定が可能になります。

.htaccessを利用すれば、サーバー設定をあなたのお好みにカスタマイズできます。たとえばPCコンテンツと携帯コンテンツの振り分け、ログファイルを直接見られないようにする、画像を直接リンク貼付されないようにするなど思い通りの仕様にできます。この自由度の高さは、プロバイダのWEBスペースや無料のレンタルサーバーでは味わえません。

.htaccessサンプル集

よく使用される.htaccessのサンプル集です。コピーしてお使いください。

「.htaccess」の基本 BASIC認証(ポップアップ認証)

「『.htaccess』とは何?」と思われる方でも、下図のようなポップアップ画面を見たことがあると思います。これは、BASIC(ベーシック)認証がかかっているURLにアクセスしたためです。

ベーシック認証

BASIC認証を利用すれば、たとえば制作途中のサイトを関係者だけ見ることができるようにしたり、限られた人数でコミュニケーションを図るようなサイト運営にすることができます。

※弊社では『会員制ディレクトリ』と呼んでいます。

BASIC認証を設定するには、アスカレンタルサーバーでは「ファイルマネージャ」をご利用いただければ初心者の方でも簡単に設定することができます。

.htaccessで設定する場合には、「.htaccess」と「.htpasswd」が必要です。「.htpasswd」内には、パスワードをそのまま書かず暗号化をしなければいけません。「.htpasswd」の暗号化を作成できる「.htpasswd暗号化ツール」をご用意しましたので、ご利用ください。.htaccessファイルも同時に作成できます。

「.htpasswdメーカー」.htpasswd暗号化ツール.htpasswdメーカー

.htaccessでの記述

※注意※
AuthUserFile は絶対パスで記入してください。絶対パスとは弊社ではUNIX系OSですので、頂点「/」からお客様の領域までのサーバー内の道筋です。不明な場合はファイルマネージャから作成して下さい。

.htpasswdでの記述例

asuka:243uDamkJjji2

ページのトップへ

特定のアドレスから来たものは許可、それ以外は拒否・特定のホストからはBASIC認証を要求しない方法

.htaccessでの記述
TIPS

Satisfy Anyを付けることで条件を満たすことができます。 Satisfyはホストレベルのアクセス制御とユーザ認証との相互作用を指定できます。パラメータはAll か Any で、Allにすればクライアントがアドレスに対して条件を満たしているかどうか判定したのちに、ベーシック認証を行います。 Anyにすれば指定IPアドレス 192.168.xxx.xxx/xxからアクセスが来た時は許可し、それ以外からアクセスが来た時はベーシック認証となります。

ページのトップへ

画像への直リンク禁止(画像への直接リンクを防ぐ方法)

.htaccessでの記述

これは、.gif .jp(e)g .png .lzh .zipの拡張子を持ったファイルに直接リンクできない設定です。リンク元がhttp://xxxxxx.jp/でないと、リンクをすることができません。

さらに応用編として、http://xxxxxx.jp/からのアクセスと、http://www.xxxxxx.jp/からのアクセスを許可するには、下記のようになります。

ページのトップへ

datやlogなど直接アクセスできない拡張子にする設定

.htaccessでの記述
TIPS

CGIなどのファイルデータは「.log」「.dat」とされることが多いです。 これはそれらの重要なファイルを直接ダウンロードされたくない時に利用し、CGIなどからはアクセスできるようにする設定です。 複数の拡張子パターンを記述するには以下のようにします。

.htaccessでの記述

ページのトップへ

携帯とPCを自動振り分け(UserAgent判定編)

振り分けを行うにはPHPやCGIなどのプログラムを使う方法もありますが、 ここでは「.htaccess」のみで制御する方法を公開します。

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "DoCoMo" [NC,OR]
RewriteRule ^$ http://xxxxxxx.co.jp/i/ [R,L]

例えばトップページに上記のように記述すると、"DoCoMo"の携帯ブラウザは、http://xxxxxxx.co.jp/i/ へアクセスします。 しかし、これではあくまでトップページ「/」にアクセスがきた時に反応するもので、直接「/index.html」として 入力された場合には反応しません。

そこで、そのディレクトリに来たアクセスすべてに反応するように以下に変更します。

RewriteRule ^(.*)$ http://xxxxxxx.co.jp/i/ [R,L]

これで一見、成功したように見えますが、この状態では条件次第で無限ループが発生します。 その条件とは、この「.htaccess」をおいているディレクトリ以下にフォルダを作って振り分けようとしている場合です。

http://xxxxxxx.co.jp/ が、外部のサイトならばまったく問題ありません。 しかし、http://xxxxxxx.co.jp/ にきたものを http://xxxxxxx.co.jp/i/ へリダイレクトしようとしている場合には無限ループが発生します。 「.htaccess」はずっと再帰的にディレクトリに効いていることになりますので、 http://xxxxxxx.co.jp/i/ へヒットした後も、リライト条件にヒットしたことになって、無限ループとなります。 ※最上位にある「.htaccess」がずっと有効になっている状態。

ループしないようにはさらに条件をつけます。無限ループを防ぐには、http://xxxxxxx.co.jp/i/ には反応しないように しなくてはいけません。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/i/

これにより、http://xxxxxxx.co.jp/i/ は反応しないという条件が加わりました。 「RewriteEngine On」の直後に条件をつけるのが理想的でしょう。

この時点での「.htaccess」の状態

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/i/
RewriteCond %{HTTP_USER_AGENT} "DoCoMo" [NC,OR]
RewriteRule ^(.*)$ http://xxxxxxx.co.jp/i/ [R,L]

これで"DoCoMo"の携帯ブラウザは、トップページにアクセスが来たとたんに、http://xxxxxxx.co.jp/i/ へリダイレクトされるようになりました。 もしファイル名も維持したい場合は、以下のように記述して下さい。

RewriteRule ^(.*)$ http://xxxxxxx.co.jp/i/$1 [R,L]

この設定なら、http://xxxxxxx.co.jp/abc.html にアクセスがきた時は、http://xxxxxxx.co.jp/i/abc.html にアクセスされるようになります。

RewriteCond %{HTTP_USER_AGENT} "SoftBank" [NC,OR]
RewriteRule ^(.*)$ http://xxxxxxx.co.jp/s/$1 [R,L]

携帯の種類によってわけたいのであれば、続けてこのように記入すればOKです。 もちろん、/s/ はリダイレクトに反応しないという記述を忘れないで下さい。

以下、サンプルとなります。

.htaccessでの記述

このサンプルは一般的な携帯ブラウザは、/i/ へリダイレクトし、オペラブラウザは、/opera/ ディレクトリを表示させるという方法です

TIPS

PHPを使って振り分けることも可能です。その場合は以下のような設定になります。参考まで。 このサンプルも書き方を誤ると無限ループになりますので動作環境をご確認の上、ご利用下さい。

phpの場合

<?
$agent = $_SERVER['HTTP_USER_AGENT'];
if(ereg("DoCoMo",$agent)){
header("Location: http://xxxxxxx.co.jp/i/");
exit;
}
elseif(ereg("UP.Browser",$agent)){
header("Location: http://xxxxxxx.co.jp/e/");
exit;
}
elseif(ereg("J-PHONE",$agent)){
header("Location: http://xxxxxxx.co.jp/v/");
exit;
}
else{
header("Location: http://xxxxxxx.co.jp/index2.html");
exit;
}
?>

ページのトップへ

特定のホスト以外からの接続は別ページを表示

特定のIPアドレスからのアクセス以外はメンテナンスページを表示させ、 その許可されたIPアドレスからは本来の編集したいページを表示させたい場合などに利用します。

192.168.1.11以外からきたものは、/mente/ へ飛ぶようにする。 もし、IPアドレス帯で指定したい場合は、以下のようになります。

TIPS

Rewriteのオプションの一部を紹介します。

オプション名 解説
[NC] パターンの判定区別をしません。大文字・小文字を区別しない場合につかいます。
[OR] 「○○○かもしくは△△△ 」のような条件指定方法です。指定しない場合は and 条件になります。
[R] 強制的にredirect(リダイレクト)します。[R=301]や[R=302]もありますが、意図がないかぎりは指定する必要はありません。
[L] 最終行(Last)です。この行以降のRewriteRuleは無視されます。つづけてルールを書かない場合は、何も書かなくても問題ありません。

ページのトップへ

疑問は今スグ解決!お問い合わせフォームにて疑問、ご質問にお答えしております。お気軽にお問い合わせください。本日中にお答えします! お問い合わせはこちらから アスカユーザーさま専用お問い合わせ

お問い合わせ

WEBでカンタンお見積もり

ドメイン取得は先着順。まずは取得できるか調べましょう!

初めての方へ

初めての方へ

【レンタルサーバー初心者・
アスカご利用初めての方へ】

初めての方へ

【重要】「ガンブラー」対策

新機能!クリックひとつで出来るセキュリティ対策です。

現在のキャンペーン
ドメイン永久無料!
ドメイン新規取得と継続料金がずーっと無料になるチャンス。 お見逃しなく!
集客に効く!広告5,000円分プレゼント
日本市場でとても重要な「Yahoo!JAPAN」の検索結果に上位表示できます。
JPRS日本レジストリ

当社は日本レジストリの指定業者です