電子書籍の厳選無料作品が豊富!

mod_rewriteを使って、動的サイトを静的サイトに見えるような効果を得たいと思っています。プログラムは年月日をGETで渡す仕様になっていて、例えば/?year=2007&month=07&day=18のようなアドレスになります。これを/20070718でアクセスできるようにしたいという訳です。

プログラムファイルを置いてあるディレクトリに.htaccessを置き、以下のように記述しました。

RewriteEngine on
RewriteBase /prog (プログラムを置いてあるディレクトリ)
RewriteRule ^/([0-9]+)([0-9]+)([0-9]+)$ /?year=$1&month=$2&day=$3 [L]

しかし、/20070718でアクセスしても404 not foundと返ってくるだけで、うまく反映されていないようです。このディレクトリ自体にベーシック認証をかけていますので、.htaccessにはAuthUserFileなどの設定も記述しています。認証自体はうまく作働していますので、.htaccessを読んでいないという事はないようです。

どこがどう間違っているのか、あるいは見落としている点がありましたらご指摘いただけると幸いです。

A 回答 (2件)

 書換え元,書換え先ともに先頭の"/"が要らない.



RewriteRule^([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])$ ?year=$1&month=$2&day=$3 [L]

 あとディレクトリのように,"20070719/"のように最後に"/"をつけてもきちんと反応するようにしたければ,最後に"/?"が必要.

RewriteRule^([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])/?$ ?year=$1&month=$2&day=$3 [L]

 さらに,RewriteRuleでは繰り返しの回数指定表現が使えるので,

RewriteRule^([0-9]{4})([0-9]{2})([0-9]{2})/?$?year=$1&month=$2&day=$3[L]
    • good
    • 0
この回答へのお礼

ありがとうございます!いけました!

これを機に、しっかり正規表現勉強したいと思います。本当にありがとうございました。感謝です!

お礼日時:2007/07/20 02:03

少なくとも正規表現の部分はおかしいですね。



RewriteRule ^/([0-9][0-9][0-9][0-9])([0-9][0-9])([0-9][0-9])$ /?year=$1&month=$2&day=$3 [L]

他が正しいのかどうかちょっと今試せないのでわかりません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。正規表現部分を変更してみましたが、同じく404しか返ってきませんでした…。うーん、なぜなんでしょうか。

お礼日時:2007/07/19 08:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!