htaccess機能の利用他
.htaccessファイルの特徴
.htaccess ファイルは、サーバの動作を制御する設定ファイルで、各ユーザーが、各ディレクトリ単位で設定できる特別なテキストファイルです。ファイル名が無く拡張子のみのファイルです。テキストファイルの為、FTPでのアップロードはテキストモードで行なう必要があります。
.htaccess ファイルは、設置したディレクトリおよびその下のサブディレクトリ全体に影響を及ぼします。
サーバーによっては.htaccess ファイルを設置できないところもあります。無料のホームページスペースでは置けないところが多いようです。
スポンサード リンク
.htaccess機能の利用例
.htaccessを使ってディレクトリの内容一覧を見せない
サーバーによってはインデックスファイルが無い時、ディレクトリの内容一覧を表示するようになっていることがあります。見られたらまずい場合は隠すようにした方がよろしい。でも、ダミーの
index.htmlかindex.htm を全てのディレクトリに書くのはめんどうな時、.htaccess
で解決できます。一覧を表示するのをやめるには、.htaccessファイルに次のように書きます。
Options -Indexes
反対に見せる場合は、
Options +Indexes
とします。
.htaccessを使ったアクセス制限(直リンク禁止)
HTMLファイルに対するアクセス制限(直リンク禁止、直接リンクを禁止)は、下記の掲示板の迷惑書き込み対策と同じものが有効です。
しかし画像ファイル等に対してはこの方法は使えません。しかし、.htaccessファイルでは可能です。.htaccessファイルを置いたディレクトリ以下のファイルの全てに適用できます。
SetEnvIf Referer "^http://www\.****\.net" ok
order deny,allow
deny from all
allow from env=ok
1行目で、環境変数Refererが"http.//www.****.net"だったなら、okという変数をセットします。2行目で拒否と許可の順番を指定、3行目で全てを拒否して、4行目でokのみを許可します。
Norton Internet Security等を利用している場合等で、参照元を隠してアクセスすると画像等が正常に表示されないので注意が必要です。
.htaccessを使ったモバイルサイトへの振り分け
モバイルサイトとパソコン用のサイトを作って、携帯電話でアクセスした人を自動でモバイルページへ飛ばす方法を紹介します。サイトのルートディレクトリに次のような内容の.htaccess ファイルを置きます。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^(DoCoMo|KDDI|DDIPOCKET|UP\.Browser|J-PHONE|Vodafone|SoftBank)
RewriteRule ^$ /m/ [R]
携帯電話でアクセスするとユーザーエイゼント(HTTP_USER_AGENT)にDoCoMoとかKDDIとかの文字列を含んでいると、http://ドメイン/m/ のファイルに飛ばすのです。
「^$」の「^」は行の最初を、「$」は行の最後を表わします。つまり何も無い(http://ドメイン)ということです。「[R]」は転送の意味です。
私の場合はこれ以外何もしなくても問題ありませんでしたが、この.htaccessファイルを置いた直下のディレクトリには
RewriteEngine Off
を記述した.htaccessファイルを置いた方が良いでしょう。
スポンサード リンク
.htaccessを使ってトップページに飛ばす方法
私は使ったことがありませんが、時々「トップページ以外には直接リンクを禁止」と書いているサイトがあります。ホームページで公開しておきながら、HTMLファイルへの直リンクを禁止するのはおかしいとは思います。しかし、どうしてもこれをやりたい場合の参考になると思います。
上記の.htaccessを使ったアクセス制限(直リンク禁止、直接リンクを禁止)を使用してトップページ以外のファイルに対してアクセス制限(直リンク禁止、直接リンクを禁止)をします。
次に下記の.htaccessリダイレクトを使ったホームページの移転で述べている、存在しないファィルやエラーが出た時(403: Forbidden, 404: File Not Found)に、トップのページへ転送させる方法も適用します。
.htaccessリダイレクトを使ったホームページの移転
今回ホームページを息子の使っているサーバーからアスナロネット(as76.net)に移転しました。ファィルもディレクトリ構造もほぼ同じなので、.htaccessファイルのりダイレクト機能で行なってみました。非常に簡単で効果的だったので紹介します。
もしこれを使わないと、100以上ある全てのHTMLファィルを変更して、新しいページへ転送する記述をしないといけません。つまり次のような記述を移転前の全てのページにします。CONTENT= の所を
"0" にすると、永久的な移転となります。それ以外では、一時的な移転とみなされることがあります。
<HTML>
<HEAD>
<META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://as76.net/dai/*****.htm">
</HEAD>
</HTML>
これと同じ動作をさせるものを、.htaccessファィルひとつで簡単に作ることができます。つまり次の記述をした
.htaccess ファィルを http://www.car-e.net/~dai/ のディレクトリに作成します。
Redirect permanent /~dai/ http://as76.net/dai/
ErrorDocument 404 http://as76.net/
ErrorDocument 403 http://as76.net/
この1行目で、http://www.car-e.net/~dai/ 以下のファィルにアクセスがあると、
http://as76.net/dai/ の中のファィルに直接転送(リダイレクト)されます。
/~dai/ 部分は http://www.car-e.net/~dai/ のドメイン部分以前を除いたもの(/で始まる)にします。
2〜3行目は、http://www.car-e.net/~dai/ にアクセスしても存在しないファィルやエラーが出た時(403:
Forbidden, 404: File Not Found)にも、トップのページへ転送が行なわれるようにする為です。
この2〜3行目の記述は新しい移転先サーバーでも使えます。つまりhttp://as76.net/dai/ のディレクトリにこの2〜3行目を記述した.htaccessファィルを置けば、それ以下で起こったエラーでは
http://as76.net/ のトップページに転送されます。
この方法はHTMLファイル名を変更したり、削除した場合でも、トップページへ飛ばすことができて非常に便利です。私は今も使っています。
もちろん.htaccess の使えないサーバーではこの方法は使えません。
2007.03.22
ところが、この方法にはとんでもない落ちがありました。同じドメイン内で、待ち時間零でページの転送をさせると検索ロボットは転送先のアドレスを登録しないで、転送元のアドレスを登録することがわかりました。検索ロボット用のサイトマップにちゃんと転送先のアドレスだけを記入しているにもかかわらず、転送元のアドレスだけが登録されていたのです。
また、勝手に旧ページにリンクした場合も、リンクからはちゃんと転送される為か、間違ったアドレスのままとなっている場合が多くありました。
仕方なく、転送に5〜7秒の待機時間を設定することにしました。これで検索ロボットも人も気がついてくれるでしょう。
2008年5月
BASIC認証(IDとパスワードでアクセス制限)
Basic認証とは、IDとパスワードを正しく入力しない限り、そのディレクトリ以下のファイルにアクセスできないようにする仕組みです。これも
.htaccess によって実現できます。
例として、/abc 以下のディレクトリに適用する場合は .htaccess ファイルを
/abc/.htaccess のように置いてファイルの内容は次のように記述します。
require valid-user
AuthName "Please enter user name and password"
Authtype Basic
AuthUserFile /****/*****/abc/.htpasswd
/****/*****/abc/.htpasswd というのはIDとパスワードの組が入ったテキストファイル .htpasswd へのフルパスを指定します。このドキュメントルートのパスがわからない時はサーバーの管理者に問い合わせてください。
例として .htpasswd のテキストファイルの内容は次のようにします。
abcdef:KTmc76gQ/YvZg
これは ID = abcdef Password = 123456 とした場合の例です。インターネットで「ID
パスワード 暗号化 BASIC認証」で検索すれば暗号化するプログラムはいくらでもあります。
IDとパスワードの組み合わせが多くある場合はこの行数を増やせば対応できます。
wwwの有無にかかわらずアクセスできるサーバーの設定
私の使っているサーバーでは、http://as76.net/ だけでホームページが表示されて、http://www.as76.net/ ではホームページの表示ができませんでした。
wwwが有る場合と無い場合の両方で表示できるようにならないものかと思って色々やっていたら、うまくできるようになりました。それはサブドメインとして、www.を登録する方法です。
つまり、ドメインの設定でサブドメインに www.as76.net を登録して、 http://as76.net/ に転送を設定するだけです。こんな方法をして良いのかどうか私には判断できませんが、うまくいったので良しとしましょう。
2007.03.23
HP作成 Menu |迷惑書込対策 |迷惑メール対策 |メール送信規制 |BBSログ変換 |メールCGI改造 |テキストメニュー |HTML一括変更 |外部Menu file |外部CSS |段組レイアウト |表示の速いHP |HPの横幅 |HPの背景 |HPの文字 |HPの見出し |HPのタイトル |htaccess機能 |Adsenseクリック規制 |Google広告の配置 |HPビルダー起動時間 |複数パソコンでHP更新 |文字の大きさ変更 |ページ内検索 |Thumbs.db
Car Evolution |Tomy's HP |このページの先頭
