[前][次][番号順一覧][スレッド一覧]

rails:833

From: psychs@d...
Date: Tue, 27 Dec 2005 13:40:08 +0900 (JST)
Subject: [rails:833] Re: URI を引数にアクションを呼ぶ方法

中川です。

>   map.connect 'register/*uri', :controller => 'urimanager',
>                                :action => 'register'
>
> とすると、params[:uri] が ["http:", "", "www.google.com"] になりますので、
> uri = params[:uri].join('/') とすれば受け取ることができます。

なるほど。
手元で試してみたところ、WEBrick、Apache2 のどちらでも、この方法で ok で
した。復元については、params[:uri].to_s で join('/') 相当になるようです。

> ただし、この方法だと末尾のスラッシュの有無
>   http://localhost:3000/register/http://www.google.com/
>   http://localhost:3000/register/http://www.google.com
> の区別はできませんので、ホスト名だけだといいけど、下位ディレクトリも含ん
> だ URI だと嫌ですね。

サーバのディレクトリ構成をそのまま URI として公開している場合でも、同名
のファイルとディレクトリが併存することはまずないので、問題なさそうですね。

> > しかし、このアプリを Apache 2.0.49 + mod_fastcgi 2.4.2 の環境に持っていっ
> > たときに、
> >
> >   http://localhost:3000/register/http://www.google.com/
> >   http://localhost:3000/register/http%3a%2f%2fwww.google.com%2f
> >
> > のどちらにアクセスしても、404 が返ってきます。
>
> こちらについては、(.htaccess ではなく) サーバの設定ファイルに
>   AllowEncodedSlashes On
> を指定すれば (後者のアクセスは) 動くと思いますがどうでしょうか?
>
> (参考) http://httpd.apache.org/docs/2.0/mod/core.html#allowencodedslashes

上で教えていただいた「*uri」とこの方法を利用することで、両方の形式のアク
セスを受け入れることができるようになりました。

おかげで、すべての問題をすっきり解決することができました。
ご教授、感謝します。ありがとうございました。

-- 
Satoshi Nakagawa



--
ML: rails@r...
使い方: http://QuickML.com/
Web Site: http://wiki.fdiary.net/rails/
ML Archives: http://www.fdiary.net/ml/rails/

[前][次][番号順一覧][スレッド一覧]

       828 2005-12-24 00:45 [psychs@d...         ] URI を引数にアクションを呼ぶ方法        
       829 2005-12-24 00:59 ┗[kazuhiko@f...       ]                                       
->     833 2005-12-27 05:40  ┗[psychs@d...         ]