- ベストアンサー
.htaccessによるリダイレクト
- 現在すべてのhtmlファイルをカテゴリごとに階層化したいと考えています。
- 移動前のURLにアクセスしたときにリダイレクトする方法を教えてください。
- 回答をよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
この正規表現でよいかどうかわかりませんが、 (例えば、http://hoge.com/inu/doc とアクセスがあると、http://hoge.com/doc/docにりダイレクトするので....) 例えば、 RedirectMatch /inu\/([^\/]+)$ http://www.tenman.info/inu/dog/$1 >なぜ、無限ループになるか テストされた正規表現では、inuディレクトリ内のファイルだけでなく docディレクトリ内のファイルも、リダイレクト対象になってしまうためと思います。 正規表現を研究してみてはいかがでしょうか
その他の回答 (3)
- exists
- ベストアンサー率62% (27/43)
遅くなってすみません。 答えが、ご希望通りかどうか自信がありませんが、 別にホルダごとでなくてもリダイレクトはできます。 紹介したページで RedirectMatch /naisyo\/(.*)$ http://www.himitu.com なんてのがあります index.htmlその他諸々、http://www.nantokakantoka.com/に向けるなら、 RedirectMatch /(.*)$ http://www.nantokakantoka.com/ でいいです。 /(.*)$ これ、正規表現といいます。 例えば、上の書き方だと、index.htmlと同じ階層にある全てという意味 http://www.nantokakantoka.com/ スペースで区切られたこのURLは、リダイレクト先です もし、ファイルごとに、もっと複雑に、あれこれ色々なパターンで制御したいという意味なら、 mod_rewriteをキーワードに調べてください。
補足
何度もありがとうございます。 未だ解決しておりませんが、色々と試しましたので、報告します。 ドメイン名 myどめ.com 、テスト用にmyどめ.come/test/を作成。 testフォルダのinu01.html ~inu05.html にアクセスしたときに 「dog」フォルダにリダイレクトさせたい。 testの階層に以下の.htaccessを設置し実験 実験1:test以下にdogフォルダを作りそちらへリダイレクト .htaccessの中身 RedirectMatch /inu(.*)$ http://myどめ.com/test/dog/inu$1(改行) (改行) 結果1 リダイレクトがループしてしまう。 実験2:myどめ.com以下にdogフォルダを作りそこへリダイレクト .htaccessの中身 RedirectMatch /inu(.*)$ http://myどめ.com/dog/inu$1(改行) 結果2: うまくリダイレクトしている。 --- 別のフォルダにリダイレクトさせることはできましたが、下層フォルダを作成し、そちらへのリダイレクトはできませんでした。 私のサイトの構造から、やりたいのは実験1の方なので、どこがおかしいのか指摘いただければ幸いです。
- exists
- ベストアンサー率62% (27/43)
ご参考
補足
回答ありがとうございます。 参考URLを拝見しましたが、すでに階層化されているサイトで、フォルダごとのリダイレクトについて記載されているようです。 質問の通り、私のサイトは階層化されておらず、indexd.htmlを含むすべてのhtmlファイルがトップフォルダに入っているため、フォルダごとでのリダイレクトでは対応できません。 未だ解決しておりませんので、方法があればぜひご教授ください。
- suzuko
- ベストアンサー率38% (1112/2922)
ご参考までに。
補足
回答ありがとうございます。 そのページは存じております。そこで正規表現として説明されていますがそこらあたりがちんぷんかんぷんでして、ここで質問いたしました。 その事も質問に記載すべきでした。反省しております。 できましたらズバリの回答いただければ幸いです。 むしの良い話で恐縮ですが、OKwaveはそれが認められているサイトだと認識しております。
お礼
> 例えば、 > RedirectMatch /inu\/([^\/]+)$ http://www.tenman.info/inu/dog/$1 残念ながら動きませんでした。 下層にフォルダを作って階層化は現段階ではあきらめる事にいたします。 この質問もかなり下のほうに来てしまいましたので、一旦締め切ります。 もしかしたら後日再質問するかもしれませんので、そのときはまたご教授ください。 ありがとうございました。