アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
現在、業務でmod_rewriteの設定をしているのですが、こまっています。

やりたい事は
http://localhost/hoge/aaa/bbb/
のアクセスがきた時に
http://localhost/hoge/?action_aaa_bbb_index=true
の内容を表示したいです。
但し、URLは http://localhost/hoge/aaa/bbb/ という感じです。


他のサイトで調べて、設定をしたのですがどうしても
http://localhost/hoge/aaa/bbb/
アクセスすると
http://localhost/hoge/以下のディレクトリィが表示されてしまいます。



また最後のオプションを[R]にすると表示はされますが
http://localhost/hoge/?action_aaa_bbb_index=true
にURLが書き換わってしまいます。
(これは当然なので、認識しています。)


以下、設定を記述します。
よろしくお願いします。

■環境 windows XP apache2.2
■記述箇所 httpd.conf

--------設定内容---------

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/hoge/([0-9A-Za-z]+)/([0-9A-Za-z]+)/?$ /hoge/?action_$1_$2_index=true [L]
AllowEncodedSlashes On

A 回答 (3件)

http://localhost/hoge/ にアクセスしたときに動作するのは
どんなプログラムなのでしょうか。たとえば、index.php が
動作するのであれば、

RewriteRule ^/hoge/([0-9A-Za-z]+)/([0-9A-Za-z]+)/?$ /hoge/index.php?action_$1_$2_index=true [L]
のようにマッピングすればよいのではないでしょうか。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
ご指摘どおり index.php を指定したら動作しました。
リダイレクトで表示されたのでindex.phpは必要ないと思っていました。
大変勉強になりました。ありがとうございました。

お礼日時:2008/06/23 14:49

既に解決されたようですが


#1に書いた ^/ と/無しの件について 日本Apacheユーザー会でのやり取りより要約

1.httpd.conf のグローバルセクション(Directoryコンテナの外)に記述 <=質問者さんはこれに該当しますね
 ^/ でマッチします
  グローバルセクションに
   <IfModule mod_rewrite.c>
    rewrite、、、、、
   </IfModule>
    の場合も同じ
 
2.httpd.conf の<Directory コンテナ内に書いた場合
  ^/ にマッチしない

3. .htaccess に書いた場合
  ^/ にマッチしない

## と言うのが少なくとも現在のバージョン(2.0系なら2.0.63 1.3系なら1.3.41 2.2系は多分全て)の仕様のようです
 但し過去のバージョンに置いては違う動作(.htaccessに記述しても ^/ にマッチするなど)も有るかもしれないらしいです

自分の環境でマッチするかどうかは DocumentRootに例えば test.htm などのFileを置き
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/test.htm
RewriteRule ^(.*)$ /test.htm?$1 [R]
 と記述して http://hoge.example.com/a.htm などにアクセスし その結果が
http://hoge.example.com/test.htm?a.htm <= こうなれば ^/ にマッチしない
http://hoge.example.com/test.htm?/a.htm <= ^/ にマッチする

と言うことのようです。
回答欄をお借りしてつけたさせていただきました。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
自分がたまたまグローバルセクションに記述していた為、
マッチしていたんですね。
サンプルを探しながらやったのでそこまで意識できてませんでした。

ご指摘ありがとうございます。
大変勉強になりました。

お礼日時:2008/06/26 18:16

RewriteRule ^/hoge/([0-9A-Za-z]+)/([0-9A-Za-z]+)/?$ /hoge/?action_$1_$2_index=true [L]


       ↓ /を消して
RewriteRule ^hoge/([0-9A-Za-z]+)/([0-9A-Za-z]+)/?$ /hoge/?action_$1_$2_index=true [L]
だとどうですか?
AllowEncodedSlashes On はクエリーに / が含まれた場合のことだからこの事とは関係ないはず(たぶん)

Apache1.3~2.2 までのマニュアルを確認しても
http://httpd.apache.org/docs/1.3/mod/mod_rewrite …
http://httpd.apache.org/docs/2.0/mod/mod_rewrite …
http://httpd.apache.org/docs/2.2/mod/mod_rewrite …
いずれも
RewriteRule ^oldstuff\.html$ newstuff.html
      ↑/無しで記述であり
RewriteRule ^/oldstuff\.html$ /newstuff.html
      ↑のように/付きではない
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
先頭の^/は特に関係なかったようです。
ほかの方の設定をみさせていただいた感じ、ほとんどついていたのと、
^/を指定して開始を設定した方が、予想外のところでリライトかからずすむので良いかと思いつけました。

もう少し有効性を判断して検討したいと思います。

ありがとうございました。

お礼日時:2008/06/23 14:54

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