ちょっとしたWeb制作でよく使う.htaccessの記述を、すぐにコピペできるようまとめます.
.htaccessやmod_rewriteに関する詳細はApacheの公式ドキュメントを参照してください.
目次
- .htaccess自体へのアクセスを拒否
- ファイル一覧を表示させない
- 特定のホスト/IPからのアクセスを拒否
- BASIC認証をかける
- 永久的なリダイレクト
- 基本的なリライト
- 静的URIで動的URIのコンテンツへアクセスする
- 特定のURIでのアクセスに対して404を返す
- www無しに統一
- index.html(.php)無しに統一
- デフォルトのエラーページを変更
.htaccess自体へのアクセスを拒否
「.ht」から始まるファイルへのアクセスを拒否します.
<Files ~ "^\.ht">
deny from all
</Files>「"」で囲まれた部分に正規表現が使用できるので、任意のファイルへのアクセスを拒否することができます.
ファイル一覧を表示させない
index.htmlなどが存在しない場合にディレクトリの内容を表示させないようにします.
Options -Indexesまたは次のようにします.
IndexIgnore *
特定のホスト/IPからのアクセスを拒否
example.comまたは000.000.000.000からのアクセスを拒否します.
order allow,deny
allow from all
deny from example.com
deny from 000.000.000.000example.comまたは000.000.000.000からのアクセスのみを許可するには全ての「allow」と「deny」を逆にしてください.
BASIC認証をかける
AuthType Basic
AuthUserFile /home/user/www/.htpasswd
AuthGroupFile /dev/null
AuthName "ONLY ADMINISTRATOR."
require valid-userAuthUserFileディレクティブに.htpasswdファイルのパス、AuthNameディレクティブに認証領域(任意の文字列)を指定します.
永久的なリダイレクト
/foo/以下をhttp://example.com/へ永久的な変更としてリダイレクトします(サイトの引っ越しなど).
Redirect permanent /foo/ http://example.com/
基本的なリライト
/foo
へのアクセスで
/bar.php
の内容を返します.
RewriteEngine On
RewriteRule ^foo$ bar.php [QSA,L]
静的URIで動的URIのコンテンツへアクセスする
/page-123.html
へのアクセスで
/page.php?id=123
の内容を返します.
RewriteEngine On
RewriteRule ^page-([0-9]+).html$ page.php?id=$1 [QSA,L]RewriteRuleの第1引数には正規表現が使用でき、括弧()で囲んだ部分は後方参照として第2引数へ引き継がれ、$1, $2, $3..のようにして利用することができます.
特定のURIでのアクセスに対して404を返す
http://example.com/でのアクセスに対して404を返します.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com
RewriteRule ^(.*)$ - [R=404,L]
www無しに統一
http://www.example.com/
へのアクセスを
http://example.com/
へ301リダイレクトします.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule ^(.*)$ http://example.com/$1 [R=301,L]
index.html(.php)無しに統一
http://example.com/foo/index.html
へのアクセスを
http://example.com/foo/
へ301リダイレクトします.
RewriteEngine On
RewriteCond %{THE_REQUEST} ^(.*)/index\.(html|php)
RewriteRule ^(.*)index\.(html|php)$ http://example.com/$1 [R=301,L]
デフォルトのエラーページを変更
ErrorDocument 403 /your_403_error_page.html
ErrorDocument 404 /your_404_error_page.html
ErrorDocument 500 /your_500_error_page.html
以上です.


この記事にコメントする