さんざんはまったのでメモ。
例えば、/hogeをhttp://hoge.comに飛ばしたい場合は、
RewriteRule ^/hoge http://hoge.com [NE,R=301,L]
とかすると思うんですよ。
ここで、http://ほげ.comに飛ばしたい場合はどうするか。
まあ普通に考えてURLエスケープしますよね。パーセントを使うわけです。
RewriteRule ^/hoge http://%E3%81%BB%E3%81%92.com [NE,R=301,L]
これで完璧だと思ったら、どうも世の中うまくいかない。
実際にこれを動かすと、何故か
http://%E31%BB%E312.com
に飛ばされる。
なにゆえ!!!
結論から言うと、RewriteCondを使う場合に、パーセントはRewriteCondの正規表現で()指定した部分を%[数字]で置き換える指令になっちゃうんです。
なので、%[数字]の部分は全てエスケープしなければいけません。
エスケープ文字は\です。
つまり正しくは
RewriteRule ^/hoge http://%E3\%81%BB%E3\%81\%92.com [NE,R=301,L]
とするべきです。
ここで間違って%E3とかまで\%E3とやってしまうとまたおかしな事になるので注意が必要です。
“RewriteRule パーセント”でぐぐっても全くヒットしなかったので、ここにしたためるものである。
《送料無料》はじめてのPHP,MySQL,Apache この1冊で、PHP、MySQL、Apacheのすべてを習得できる! |
またひとつ、面倒くさい知識が増えた。
またひとつ、面倒くさい知識が増えた。
2回言いました
大切だからな!
ちなみに、これらのリダイレクトルールを自動作成するスクリプトを組んだのは言うまでも無い。
いいねボタンが見当たらない・・・。
はてなスターがあるじゃろ?
★
思うんだけど、ニッチになればなるほど、★とかいいね!とか、あまり意味内よね。G+みたいに検索サイトの順位と関連するなら別だけど。
まあただのおあそびだな