• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:正規表現で動的ページを静的ページに見せたい!)

正規表現で動的ページを静的ページに変換する方法

このQ&Aのポイント
  • 正規表現を使用して、動的なURLを静的なURLに変換する方法を知りたいです。
  • 具体的には、http://www.mysite.com/myindex.php?year=2010&mon=08&day=06のような動的なURLを、http://www.mysite.com/myindex/20100806.htmlのような静的なURLに変換したいです。
  • 現在は.htaccessファイルで正規表現を使用して変換を試みていますが、うまく動作しません。修正方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

こんにちは。 かなり勘違いをされているようで・・・。 RewiteRule ^/myindex/([0-9]{4})([0-9]{2})([0-9]{2}).html$ /myindex.php?year=$1&mon=$2&day=$3 [L] この場合、 ブラウザに「http://www.mysite.com/myindex/20100806.html」と入力 ブラウザのアドレスはそのままで、実際に表示されるのが、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 です。 RewiteRule ^/myindex/([0-9]{4})([0-9]{2})([0-9]{2}).html$ /myindex.php?year=$1&mon=$2&day=$3 [R=301,L] この場合、 ブラウザに「http://www.mysite.com/myindex/20100806.html」と入力 R=301でリダイレクトするので、ブラウザのURL欄は、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 に置き換わる。 実際に表示されている内容も、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 になる。 今、haruhiko39さんがやってる事は、 ブラウザに、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 と入力。 ブラウザの表示は、 http://www.mysite.com/myindex/20100806.html になって欲しいが、実際に表示されているページは、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 であって欲しい・・・。 こんな事は不可能です。 [R=301]は単純なリダイレクト処理なので、ブラウザのURLが書き換わるのは当然。 [L]は、左のアドレスが入力された場合、アドレスを書き変えずに、実際には右のファイルを表示するという動きになります。 この辺り、理解できましたか???

その他の回答 (4)

回答No.4

こんにちは。 >ブラウザfirefoxのURL欄にはまだ >動的ページのURLのまま表示されてしまいます。 これはどういう事ですか??? http://www.mysite.com/myindex/20100806.html をブラウザのURLに打ち込んだら、 http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 に変換(リダイレクト)されたという事ですか??? もともと http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 と打ち込んだら、そのままなのは当然ですが・・・? (RewiteRuleに引っ掛からないので)

haruhiko39
質問者

補足

説明不足で申し訳ございません。 RewriteEngine on RewiteRule ^/myindex/([0-9]+{4})([0-9]+{2})([0-9]+{2}).html$ /myindex.php?year=$1&mon=$2&day=$3 [R=301,L] 最後の方に[R=301]を付けると、ブラウザのURL欄が 通常なら http://www.mysite.com/myindex.php?year=2010&mon=08&day=06 となるところ R=301と付けると、 http://www.mysite.com/myindex/20100806.html と静的ページのURLの表記に書き換わると聞きました。 しかし、当方でR=301をつけてもブラウザのURL欄は動的ページのURLの表記のままなのです。 いろいろご親切に教えていただきありがとうございます。

回答No.3

こんばんは。 今思ったのですが、私のサンプルをそのままコピペしちゃいましたか? もしそうなら、 $3[L] ではなく、 $3(半角スペース)[L] です。

haruhiko39
質問者

補足

回答頂きありがとうございます。 私も後で気付いたので、修正して再度試したのですが、だめでした。 ブラウザfirefoxのURL欄にはまだ動的ページのURLのまま表示されてしまいます。

回答No.2

こんばんは。 正規表現的には合ってるはずなんですが・・・? RewriteLog "適当なパス" ← Linuxだと/var/log/Rewrite.Logとか RewriteLogLevel 3 ← あんまり大きいと見にくい ぐらいにして、ログファイルを見てみてください。 アドレスが変換されていく過程が出力されますので、最終的に欲しいアドレスになっているか確認してください。 多分、別の問題だと思うのですが・・・。

haruhiko39
質問者

補足

回答頂きありがとうございます。 こちらの方法は始めて知りました。 まだ、試していませんが、 解決に近づけるよう頑張ります。どうもありがとうござます。

回答No.1

こんばんは。 なんとなく変ですね・・・。 RewiteRule ^/myindex/([0-9]{4})([0-9]{2})([0-9]{2}).html$ /myindex.php?year=$1&mon=$2&day=$3[L] ではないですか?

haruhiko39
質問者

補足

教えて頂いたテキストを試したのですが、サイトにアクセスできない(エラーメッセージ)が出るようになりました。 せっかく教えてくださったのにうまく行かず残念ですが、新たな方法を試してみたいと思います。どうもありがとうございました。

関連するQ&A