Post on:2012年7月24日
sponsorsr
ウェブサイトやブログの運営に役立つ、「.htaccess」の設定を紹介します。
下記は各ポイントを意訳したものです。
「.htaccess」ファイルを編集する際は、必ずバックアップをとることをお勧めします。
「.htaccess」ファイルを作成することは非常に簡単です。
テキストベースのアプリケーションを開き、ワードラップ機能をオフにしてコードを記述し、ファイルを保存します。
Windowsのメモ帳などを使用すると保存する際、ファイル名に「.txt」が加わってしまいます。
.htaccess.txt
これは特に問題ありません。
ファイルをアップロードした後、サーバー上でリネームしてください。
.htaccess
ファイルをアップロードする際は、ASCIIモードで行い、パーミッションは「644」にします。
共有サーバーなどでは「604(グループ不可)」の場合もあるので、システム管理者やサーバー会社へ確認してください。
「.htaccess」ファイルは設置されたディレクトリとその配下にある全てのディレクトリに影響を与えます。
つまり、ルートに「.htaccess」ファイルを設置した場合は、全てのフォルダに影響を与えます。
http://www.yourdomain.com/| -- directory1| -- directory2| -- directory3| | -- directory3/childdirectory1| | -- directory3/childdirectory2| -- .htaccess| -- index.html
「.htaccess」をルートではなく、一つ下の「directory1」に設置するとどうなるでしょうか?
この場合は「directory1」とその配下のフォルダのみに限定されます。
「directory2」「directory3」には適用されません。
http://www.yourdomain.com/| -- directory1| | -- directory1/childdirectory1| | -- directory1/childdirectory2| | -- directory1/childdirectory3| | | -- directory1/childdirectory3/newdirectory1| | | -- directory1/childdirectory3/newdirectory2| | -- .htaccess| | -- index.html| -- directory2| -- directory3
「.htaccess」ファイルを編集する場合は、コメントを利用することを勧めます。
「#」を使用すると、その行がコメントになります。
# コメント# another comment her
「/」で終わるアクセスの際に表示するファイル名を設定します。
通常はindex.html, index.htmです。
DirectoryIndex index.php
404のエラーページに任意のファイルを指定します。
ErrorDocument 404 error.html
他のエラー時も設定できます。
ErrorDocument 400 /400.htmlErrorDocument 401 /401.htmlErrorDocument 403 /403.htmlErrorDocument 404 /404.htmlErrorDocument 500 /500.htmlErrorDocument 502 /502.htmlErrorDocument 504 /504.html
ウェブサイトにwww付きでアクセスしてきてもwww無しに向け直します。
これを利用する際は、あなたのサイトでwww無しで一貫するようにしてください。
RewriteEngine OnRewriteBase /RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]RewriteRule ^(.*)$ http://yourdomain.com/\ [L,R=301]
タイムゾーンを日本時間に設定します。
SetEnv TZ JST-9
もしくは
SetEnv TZ Asia/Tokyo
アクセス可能なファイルを設定します。
まずは、全アクセスを禁止。
order deny,allowdeny from all
続いて、特定のIPアドレスのみ禁止。
order allow,denydeny from XXX.XXX.XXX.XXXallow from all
リニューアルなどでURLが恒久的に変更した際に、旧ページのアクセスを新ページに向けます。
Redirect 301 /olddirectory/file.html http://www.yourdomain.com/newdirectory/file.html
サーバー管理者用のメールアドレスを設定します。
ServerSignature EMailSetEnv SERVER_ADMIN webmaster@domain.com
iPad, Androidのタブレットでアクセスがあった際、専用ページにリダイレクトします。
RewriteCond %{HTTP_USER_AGENT} ^.*iPad.*$RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]RewriteCond %{HTTP_USER_AGENT} ^.*Android.*$RewriteRule ^(.*)$ http://yourdomain.com/folderfortablets [R=301]
hotlinkingとはあなたのサイトの画像を他の誰かに勝手に利用されてしまうことで、その際に別の画像を指定して表示させます。
Options +FollowSymlinksRewriteEngine OnRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/ [nc]RewriteRule .*.(gif|jpg|png)$ http://yourdomain.com/img/hotlink_f_o.png [nc]
自ドメインを含まないサイトに画像を表示させたくないだけの場合。
RewriteCond %{HTTP_REFERER} !yourdomain\.com [NC] RewriteRule \.(gif|jpg|png)$ - [F]
PDFや動画などのファイルをブラウザ上で表示するのではなく、ダウンロードしてほしいファイルの拡張子を設定します。
AddType application/octet-stream .csvAddType application/octet-stream .xlsAddType application/octet-stream .docAddType application/octet-stream .aviAddType application/octet-stream .mpgAddType application/octet-stream .movAddType application/octet-stream .pdf
下記のように一行に指定することもできます。
AddType application/octet-stream .avi .mpg .mov .pdf .xls .mp4
「content-1.html」を「content.php?id=1」にリライトします。
RewriteEngine onRewriteRule ^content-([0-9]+)\.html$ content.php?id=$1
現在のアクセスをhttpsにリライトします。
RewriteEngine OnRewriteCond %{HTTPS} !onRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
SSIが利用できるファイルの拡張子を設定します。
AddType text/html .htmlAddType text/html .shtmlAddHandler server-parsed .htmlAddHandler server-parsed .shtmlAddHandler server-parsed .htm
ディレクトリにindex.htmlなど表示するべきファイルが無い場合、ディレクトリのファイル一覧が表示されないようにします。
# disable directory browsingOptions All -Indexes
ディレクトリの表示を許可します。
# enable directory browsingOptions All +Indexes
特定のディレクトリで文字セットと言語を変更したい場合の設定です。
AddDefaultCharset UTF-8DefaultLanguage en-GB
指定したウェブサイトのリファラからのアクセスを阻止します。
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} website1.com [NC,OR] RewriteCond %{HTTP_REFERER} website2.com [NC,OR] RewriteRule .* - [F]</ifModule>
指定したロボットやスパイダーのアクセスを阻止します。
<IfModule mod_rewrite.c>SetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOTSetEnvIfNoCase ^User-Agent$ .*(bot1|bot2|bot3|bot4|bot5|bot6|) HTTP_SAFE_BADBOTDeny from env=HTTP_SAFE_BADBOT</ifModule>
拡張子を指定して、.htaccessなどのファイルのアクセスを阻止します。
<Files privatefile.jpg> order allow,deny deny from all</Files><FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$"> Order Allow,Deny Deny from all</FilesMatch>
「AccessFileName」を使用すると「.htaccess」の名前を変更して利用できます。
※「httpd.conf」で設定
AccessFileName ht.access
sponsors