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