PCとスマホでディレクトリを分けたり、
httpをhttpsにリダイレクトしたりする、あれ。
それから、よく使うBasic認証のまとめです。
PCとスマホのディレクトリを分ける場合
例えば以下のようなディレクトリで分ける場合。
PC: http://example.com
スマホ: http://example.com/sp/
PC: http://example.com/test/
スマホ: http://example.com/sp/test/
.htaccesss
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ /sp/$1 [R]
RewriteBase /
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
それぞれの意味とメモ。
RewriteEngine On
#Apacheのモジュール「mod_write」を有効にする。
RewriteBase /
#リダイレクトのベースとなるディレクトリ。転送後URL。
RewriteCond %{REQUEST_URI} !/sp/
#条件。URLに/sp/が含まれていなかったら。
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
#条件。ユーザーエージェントの判別。
RewriteRule ^(.*)$ /sp/$1 [R]
#URLを書き換える指示。^行頭。$行末。.*全て。
#()でグループ化した箇所を$1で部分置換する。
RewriteBase /
#リダイレクトのベースとなるディレクトリ。転送後URL。
RewriteCond %{REQUEST_URI} /sp/
#条件。URLに/sp/が含まれていたら。
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
#条件。ユーザーエージェントの判別。
RewriteRule ^sp/(.*)$ $1 [R]
#書き換え指示。()でグループ化した箇所を$1で部分置換する。
httpをhttpsにリダイレクトする場合
.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
それぞれの意味とメモ。
RewriteEngine On
#Apacheのモジュール「mod_write」を有効にする。
RewriteBase /
#リダイレクトのベースとなるディレクトリ。転送後URL。
RewriteCond %{HTTPS} off
#条件。ssl(https)が無効の場合。
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R]
#書き換え指示。全てをhttpsにリダイレクト。
#%{HTTP_HOST} httpリクエスト先のサーバー名
#%{REQUEST_URI} ページアクセスのURL
その他の環境変数確認に便利なページ。
ルフトツールズ(LUFTTOOLS) Web便利ツール集 - 環境変数チェッカー
全てのページをトップにリダイレクトする場合
.htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !(^/$)
RewriteRule ^(.*)$ / [R=301,L]
それぞれの意味とメモ。
RewriteEngine On
#Apacheのモジュール「mod_write」を有効にする。
RewriteBase /
#リダイレクトのベースとなるディレクトリ。転送後URL。
RewriteCond %{REQUEST_URI} !(^/$)
#条件。トップページ以外のURLの場合。
RewriteRule ^(.*)$ / [R=301,L]
#書き換え指示。全てをトップにリダイレクト。
#301は恒久的な転送の場合。一時的な場合は302。
#Lは一旦処理を終了。
Lについて、こちらの記事が参考になりました。
.htaccess に RewriteRule 書くときは、[L]フラグをつけてもそこで終了しないかもよ?って話。
Basic認証を設定する場合
・まずは、以下で生成された結果を.htpasswdで保存する。
ルフトツールズ(LUFTTOOLS) Web便利ツール集 - .htaccess による認証用 パスワード暗号化ツール
TECH-UNLIMiTED|すぐに使える便利なWEBツール - .htpasswd生成
.htaccess
RewriteEngine On
AuthUserfile サーバーディレクトリ.htpasswd
AuthGroupfile /dev/null
AuthName "Please enter your ID and password"
AuthType Basic
require valid-user
<Files ~ "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</Files>
サーバーディレクトリは、フルパスを指定すること。
分からない場合は、適当にphpを作成して
以下のコードでフルパスを確認する。
php
<?php
echo __FILE__;
?>
.htaccessと.htpasswdをルートディレクトリに置く。
おわり。