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

rails:829

From: Kazuhiko <kazuhiko@f...>
Date: Sat, 24 Dec 2005 08:59:21 +0900
Subject: [rails:829] Re: URI を引数にアクションを呼ぶ方法

かずひこです。

At Sat, 24 Dec 2005 08:45:09 +0900 (JST),
psychs@d... wrote:

> そこで、route.rb のデフォルトルートの直前に、
> 
>   map.connect 'register/:uri', :controller => 'urimanager',
>                                :action => 'register'
> 
> という行を追加して、
> 
>   http://localhost:3000/register/http://www.google.com/
> 
> にアクセスしてみると、やはり「/」を区切り文字として認識するようで、uri全
> 体を引数として受け取れませんでした。

  map.connect 'register/*uri', :controller => 'urimanager',
                               :action => 'register'

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

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

もう少しダサい方法としては、@request.path が 
"/register/http://www.google.com/" になるのでそれを読めば、末尾のスラッ
シュの有無も区別できます。

> しかし、このアプリを 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
-- 
かずひこ <http://wiki.fdiary.net/kazuhiko/>
  「恋とハックはアジャイルが命!」

--
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...         ]