mod_rewriteを使ったアクセス制御
.htaccessを配置することで、ウェブアクセスに関わる設定を行なう事ができます。
注意事項
- 充分な動作確認の元、運用を開始してください。
- このページでご案内しているのはあくまで一例です。
詳しい設定方法や機能についてはウェブサーバ(Apache)の専門書籍をご確認ください。
mod_rewriteを使ったアクセス制御
さくらのレンタルサーバではmod_rewriteをご利用いただけます。
この機能を使用することで、ブラウザに表示させる文字列を任意に制御できます。
本ページに記載のサンプルはexample.sakura.ne.jpという初期ドメイン名にexample.jpというドメインを追加し、
以下のようなディレクトリ構成で運用することを前提としています。
- mod_rewriteはウェブサーバApacheの拡張機能であるため、設定は.htaccessに記述します。
- mod_rewriteを使用する際、「RewriteEngine On」という構文を先に書き、宣言しておきます。
なお、この宣言は対象とする.htaccess内に一度のみで構いません。
リダイレクト
URL書き換えリダイレクト
www.example.sakura.ne.jp/dir1/ へアクセスすると、
www.example.sakura.ne.jp/dir2/ にリダイレクト(転送)されます。
RewriteEngine On
RewriteBase /
RewriteRule dir1/(.*) dir2/$1 [R,L]
※[R]をつけるとブラウザのURLの表示も書きかわります。
アクセス⇒http://example.sakura.ne.jp/dir1/
ブラウザのURLの表示⇒http://example.sakura.ne.jp/dir2/
※[L]をつけると判定をその場で終了します。
このページに記載の内容であれば付与しなくても動作に支障はありませんが、付与されることをお勧めします。
初期ドメインにアクセスがあった場合独自ドメインへリダイレクトさせる
さくらのレンタルサーバの初期ドメインを表示させたくない場合に有効です。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?example\.sakura\.ne\.jp$ [NC]
RewriteRule .* http://www.example.jp%{REQUEST_URI} [R=301,L]
※[NC] をつけると大文字・小文字を区別しなくなります。
※RewriteCond行に指定する文字にドット . が含まれる場合、直前に \ 記号を挿入してください。
※[R=301] 301はHTTPステータスコードを示し、恒久的な転送を意味します。
この場合は検索エンジン等、機械的なアクセスに対する効果を想定しています。
※この方法はドキュメントルート(/home/初期ドメイン名/www) 直下に設置した場合のみ機能します。
初期ドメインへのアクセスを禁じたい場合、.htaccessによるアクセス制御をお試しください。
スマートフォン振り分け その1
アクセス元の端末によって表示させるページを切り替えることも可能です。
RewriteEngine On
# iPhone/ipod Touch でアクセスした場合 /iphone/配下へリダイレクト
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod) [NC]
RewriteRule ^$ /iphone/ [R,L]
# iPad でアクセスした場合 /iphone/配下へリダイレクト
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} iPad [NC]
RewriteRule ^$ /ipad/ [R,L]
# Android でアクセスした場合 /Android/配下へリダイレクト
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} Android [NC]
RewriteRule ^$ /android/ [R,L]
スマートフォン振り分け その2
スマートフォンからのアクセスに対して同一の内容で表示させたい場合、以下のように記述します。
# 大手のスマートフォンOS対象 smartphone配下へリダイレクト
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|iPad|Android|BlackBerry|Windows Phone|Symbian) [NC]
RewriteRule ^$ /smartphone/ [R,L]