詳しいことは、杉浦さんの「URLを書き換えろ!Apache Rewrite 機能の応用」と、N/Aさんの「mod_rewriteリファレンス」に大変詳細に解説してあり、勉強させていただきました♪
が、入門者ではちょっと分かりづらかった部分や、基礎知識が必要だったりしたので(涙)
自分が必要なものだけ分かりやすく整理書き足しをしておきます。
書く前の注意
「.」は「\」でエスケープシーケンスします。
RewriteBase でルートを指定(普通は「/」)しなくても良い。
RewriteCondの書き方
RewriteCond %{HTTP_HOST} ^hogehoge\.ne\.jp$
↑URLが「hogehoge.ne.jp」だったら次の行へ、という条件。
「!」は文字列の前につける、NOT条件子と同じ働き
RewriteCond %{HTTP_HOST} !^hogehoge\.ne\.jp$
↑URLが「hogehoge.ne.jp」じゃない時次の行へ、という条件。
RewriteCondを2つ続けて書いたらどちらも満たす場合のみ次の行へ。つまりAND。
ORにしたい場合は行末に「 [OR]」を付加すればよいです。
RewriteRuleの書き方
RewriteRule index\.htm index.html
↑index.htmがhtmlとなります。変換前 変換後となります。
変換前の「()」部分が変換後の「$1」に置換されます。
「[]」内の制御は「,」で区切って重複可能です。
杉浦さんによると、
RewriteRule 照合パターン 変換後の絶対URL
「変換後の絶対URL」は http://〜 から書いても良い(外部リダイレクトはそうなるね)し、サボって /〜 からでも良いが、ディレクトリ内部の相対URLではないのである。「照合パターン」がなんとなく相対URL風なので、「変換後も相対URLじゃないの?」と思いがちだが、これは違うのである! あくまで「照合パターン」なのである。
とのことです。注意しましょう。
で、ここまでやって結局どうだったかというと、
自分のリンクの書き方が間違ってて、.htaccessの書き方は悪くありませんでした。。。
(p−−)=O=O())@o@)/ <ぐふぅ
あ、そうそう。参考までに結局.htaccessをどう書いたか、って自分の設定を。
RewriteEngine On
RewriteCond %{HTTP_HOST} ^サブドメイン$
RewriteCond %{REQUEST_URI} !^/サブフォルダ名/
RewriteRule (.*) /サブフォルダ名/$1
これでsakuraのレンタルサーバのライトの場合でも、サブドメインでのアクセスを下位のフォルダ以下にこっそり書きかえれますよ♪