1. It doesn't work well when you try to mount it on a sub-directory 2. SCRIPT_NAME should be empty when it's mounted on root (even though Camping can handle it). 3. REQUEST_URI contains query string too. What about env['REQUEST_URI'].gsub(/\?.*/,'')?
It's not really a portable solution, so I don't think we should publish this all over the internet, but it's good to hear that it's working for you :-) -- It seems that (almost) everything I said earlier was wrong: Now PATH_INFO is suddenly / (I could have swear that it was gone!) And the reason I got REDIRECT_SCRIPT_NAME was because I had a "SetEnv SCRIPT_NAME /sub" in my .htaceess... It also looks like it's impossible to auto magically detect what the proper SCRIPT_NAME should be. I guess the "hack" should be put into dispatch.cgi. What about this? http://pastie.org/236889 On Thu, Jul 17, 2008 at 2:08 AM, Eric Mill <[EMAIL PROTECTED]> wrote: > OK, I am good to go, working CGI and FastCGI .htaccess and dispatch.* > files written. I changed REDIRECT_URI to REQUEST_URI. > > For CGI: > * dispatch.cgi: http://pastie.org/235313 > * .htaccess for CGI: http://pastie.org/235315 > > For FastCGI, based on the above: > * in dispatch.cgi, change Rack::Handler::CGI.run to be > Rack::Handler::FastCGI.run > * in .htaccess change dispatch.cgi to be dispatch.fcgi > > Awesome. Thanks for everyone's help. Especially Magnus and Jenna, > you two rule. > > This seems like a good candidate for the github Camping wiki -- do > people even know that thing exists, is it worth it? Or should I just > add it to the Camping wiki on why's site? > > -- Eric > > On Wed, Jul 16, 2008 at 6:13 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >> The 500-handling I'm used to appears to be gone. What's the best approach >> here? >> >> -- Eric >> >> On Wed, Jul 16, 2008 at 6:08 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >>> I think I've got it working, with this as the 'fixer' call: >>> >>> def call(env) >>> env['SCRIPT_NAME'] = '/' >>> env['PATH_INFO'] = env['REDIRECT_URL'] >>> @app.call(env) >>> end >>> >>> I think you might have meant REDIRECT_URL and not REDIRECT_SCRIPT_NAME? >>> >>> Thank you Magnus! >>> >>> -- Eric >>> >>> On Wed, Jul 16, 2008 at 5:51 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >>>> Also worth noting is that PATH_INFO isn't emptied - it's set to "/" or >>>> "/login", the correct request path. >>>> >>>> -- Eric >>>> >>>> On Wed, Jul 16, 2008 at 5:40 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >>>>> Unfortunately this isn't working. I'm checking my ENV and >>>>> REDIRECT_SCRIPT_NAME isn't set to anything. I'm using the Rack spec >>>>> to try to figure out an alternative. >>>>> >>>>> Right now, requests to "/" go to a Camping error page which says >>>>> "/index.html not found!" and requests to "/login" (which should go to >>>>> a different controller) says "/login.html not found!". PATH_INFO has >>>>> been set to "/login.html" in this case. >>>>> >>>>> I also tried setting SCRIPT_NAME to be whatever REQUEST_URI is, but >>>>> this has the same effect as using the REDIRECT_SCRIPT_NAME approach. >>>>> >>>>> Continuing to investigate, >>>>> Eric >>>>> >>>>> On Wed, Jul 16, 2008 at 5:31 PM, Magnus Holm <[EMAIL PROTECTED]> wrote: >>>>>> Simply replace Testing with TestingFixed in dispatch.cgi:11 and >>>>>> dispatch.fcgi:13 to see the diffenrence :-) >>>>>> >>>>>> On Wed, Jul 16, 2008 at 11:28 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >>>>>>> Magnus, this is terrific information, thank you for looking into this. >>>>>>> >>>>>>> I'm trying to follow your example - you use ApacheFixer to make a >>>>>>> "TestingFixed" class, but never use that class anywhere else. Do you >>>>>>> mean for the lines in dispatch.* to use "TestingFixed" instead of >>>>>>> "Testing"? >>>>>>> >>>>>>> I'm trying to use this to resolve my problems as we speak, >>>>>>> Eric >>>>>>> >>>>>>> On Wed, Jul 16, 2008 at 5:08 PM, Magnus Holm <[EMAIL PROTECTED]> wrote: >>>>>>>> This "bug" is actually Apache's fault. The problem occurs when you use >>>>>>>> mod_rewrite to hide that you're using dispatch.cgi. When you use >>>>>>>> "RewriteRule ^(.*)$ dispatch.cgi" the following happens: >>>>>>>> >>>>>>>> * SCRIPT_NAME is set to /dispatch.cgi (since that's the actual script >>>>>>>> which gets ran) >>>>>>>> * REDIRECT_SCRIPT_NAME is set to whatever SCRIPT_NAME was before >>>>>>>> * PATH_INFO is emptied >>>>>>>> >>>>>>>> I've also tested this on 1.5 and it has the same problem. However, if >>>>>>>> you use server/fastcgi.rb (not Rack as I've been testing with) you can >>>>>>>> set the ENV['FORCE_ROOT'] to 1 and it will re-set SCRIPT_NAME and >>>>>>>> PATH_INFO using REQUEST_URI, which will (partly) solve the problem. >>>>>>>> >>>>>>>> Right now, we have no FORCE_ROOT in Rack, but here's a simple fix: >>>>>>>> >>>>>>>> * Change .htaccess to "RewriteRule ^(.*)$ dispatch.cgi/$1" (You might >>>>>>>> need to drop to slash). >>>>>>>> * Add a middleware which sets SCRIPT_NAME to REDIRECT_SCRIPT_NAME >>>>>>>> (http://pastie.org/235062) >>>>>>>> >>>>>>>> This isn't really our problem, but rather Apache (which should be able >>>>>>>> to alias CGI-scripts with the correct headers). It probably won't >>>>>>>> happen, so I guess we have to add some nasty hacks into Rack. >>>>>>>> >>>>>>>> I haven't tried this on any other servers (LightTPD/Nginx), but as >>>>>>>> long as there is no URL-rewriting (I know LightTPD can do it with >>>>>>>> FastCGI) it's probably no problem (maybe not even with, if it's smart >>>>>>>> enough). >>>>>>>> >>>>>>>> Here is a simple app which shows @env (and works on both 1.5 and 2.0): >>>>>>>> http://pastie.org/235078. It would be great if you could test it on >>>>>>>> different setups and see which requires special treatment. Check out >>>>>>>> the Rack-spec for how the variables should be set: >>>>>>>> http://rack.rubyforge.org/doc/files/SPEC.html >>>>>>>> >>>>>>>> On Wed, Jul 16, 2008 at 5:07 PM, Eric Mill <[EMAIL PROTECTED]> wrote: >>>>>>>>> >>>>>>>>> Bluebie -- I tried doing this with FastCGI with the same settings >>>>>>>>> (changed .htaccess to point to dispatch.fcgi, changed dispatch file to >>>>>>>>> use Rack::Handler::FastCGI.run, got the exact same results. FastCGI >>>>>>>>> will also suffer from these bugs. >>>>>>>>> >>>>>>>>> -- Eric >>>>>>>>> >>>>>>>>> On Mon, Jul 14, 2008 at 7:40 PM, Bluebie, Jenna >>>>>>>>> <[EMAIL PROTECTED]> wrote: >>>>>>>>> > We are talking about cgi here, not fast cgi. Specifically CGI's >>>>>>>>> > interactions >>>>>>>>> > with mod_rewrite in apache. >>>>>>>>> > _______________________________________________ >>>>>>>>> > Camping-list mailing list >>>>>>>>> > [email protected] >>>>>>>>> > http://rubyforge.org/mailman/listinfo/camping-list >>>>>>>>> > >>>>>>>>> _______________________________________________ >>>>>>>>> Camping-list mailing list >>>>>>>>> [email protected] >>>>>>>>> http://rubyforge.org/mailman/listinfo/camping-list >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> Magnus Holm >>>>>>>> _______________________________________________ >>>>>>>> Camping-list mailing list >>>>>>>> [email protected] >>>>>>>> http://rubyforge.org/mailman/listinfo/camping-list >>>>>>>> >>>>>>> _______________________________________________ >>>>>>> Camping-list mailing list >>>>>>> [email protected] >>>>>>> http://rubyforge.org/mailman/listinfo/camping-list >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Magnus Holm >>>>>> _______________________________________________ >>>>>> Camping-list mailing list >>>>>> [email protected] >>>>>> http://rubyforge.org/mailman/listinfo/camping-list >>>>>> >>>>> >>>> >>> >> > _______________________________________________ > Camping-list mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/camping-list > -- Magnus Holm _______________________________________________ Camping-list mailing list [email protected] http://rubyforge.org/mailman/listinfo/camping-list

