- ベストアンサー
リダイレクト設定について
- 下層ディレクトリへのリダイレクトについて調べた結果
- 「.htaccess」を使用して、特定のURLを別のURLにリダイレクトさせる方法について教えてください
- 具体的なリダイレクト設定として、haru.com/natu/12.htmlをharu.com/natu/aki/12.htmlに、haru.com/natu/13.htmlをharu.com/natu/huyu/13.htmlにリダイレクトする方法について教えてください
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
転送先に法則性がないならば地道に書いていく方が無難だろうね。 RewriteEngine On ・・・(1) RewriteBase /natu ・・・(2) RewriteRule ^12\.html$ aki/12.html [L,R=301,NE] ・・・(3) RewriteRule ^14\.html$ aki/14.html [L,R=301,NE] RewriteRule ^15\.html$ aki/15.html [L,R=301,NE] RewriteRule ^13\.html$ huyu/13.html [L,R=301,NE] RewriteRule ^16\.html$ huyu/16.html [L,R=301,NE] RewriteRule ^17\.html$ huyu/17.html [L,R=301,NE] (1)Rewrite系のディレクティブを有効にする(httpd.conf側でAllowOverrideの設定が必要)。 (2)書き換え後のパス(RewriteRuleの第2引数)が相対パス(スラッシュで始まらない)だった時に付与するプレフィックス。書き換え前の内容は一切関係ない。 (3)アクセスしてきたパスが/natu/12.htmlだった場合(先頭の^は正規表現の冒頭にマッチする、/12\.htmlは文字通り12.htmlにマッチする、最後の$は正規表現の末尾にマッチする、/natuが暗黙で付与されるのは.htaccessが/natuの中にあるから)、/natu/aki/12.htmlにリダイレクトして(第3引数のR=301)、ここでRewrite終了(第3引数のL)、書き換え後のURLにURLエスケープを用いない(第3引数のNEだが今回正直これ要らない)。 まぁ全部これを書くというのも面倒なのでRewriteRuleの代わりにRewriteMapというディレクティブも興味があったら調べてみるといい。だが基本はRewriteCondとRewriteRuleの書き方と意味をしっかり押さえるのが重要だ。 .htaccessの置き場所はそれでいいです。
お礼
anmochi さま とても、詳しい説明をありがとうございました。 1行1行の意味を分かりやすく説明してくださって感謝です。 難しい言葉とかもありますが、それは調べてみます。 RewriteMapというのも調べてみます。 ありがとうございます。 上手くいったら、ご報告いたします!!!
補足
anmochi さま 先日は、ご丁寧な回答をありがとうございました。 お陰様で、ちゃんと出来ました。 実は、全部で53個も変換があったので、何とかRewriteMapというものを理解できないか 調べていたのですが、ちょっと私には難しすぎました。 それで、53個書き出して、成功です!! 本当にありがとうございました。 RewriteCondとRewriteRuleの書き方と意味をしっかり勉強します。