2011/5/3 boscop <[email protected]>:
> Thanks for the quick response!
>
> When using that line, some '?'s in the query string get replaced by
> '&':
>
> TEST 1:
> actual query:
> http://example.com/foo/bar/?a=b&c=d
>
> environ keys:
> REQUEST_URI: /foo/bar/?a=b&c=d
> PATH_INFO:
> QUERY_STRING: public_html/index.py&public_html/foo/bar/&a=b&c=d
>
> TEST 2:
> actual query (the second '?' is just to test whether it gets replaced,
> too):
> http://example.com/foo/bar/?a=b&c=d?e=f
>
> environ keys:
> REQUEST_URI: /foo/bar/?a=b&c=d?e=f
> PATH_INFO:
> QUERY_STRING: public_html/index.py&public_html/foo/bar/&a=b&c=d?e=f
>
> TEST 3
> actual query (more question marks):
> http://example.com/foo/bar/a=b&c=d?e=f?g=h?i=j
>
> environ keys:
> REQUEST_URI: /foo/bar/a=b&c=d?e=f?g=h?i=j
> PATH_INFO:
> QUERY_STRING: public_html/index.py&public_html/foo/bar/a=b&c=d&e=f?g=h?
> i=j
>
> Observations:
> PATH_INFO is always empty, REQUEST_URI always holds the correct path,
> QUERY_STRING replaces the '?' from the RewriteRule and the first one
> in the rest of the query string by '&' (but not any other '?'s).
>
> This would suggest just using the REQUEST_URI, but this page (http://
> blog.dscpl.com.au/2009/09/roadmap-for-python-wsgi-specification.html)
> explains why one shouldn't do that.
>
> So my questions are: Why does this replacement happen? Is there a way
> to get the correct query string in environ['QUERY_STRING'] somehow? If
> not, can I rely on the behavior that the first two question marks are
> always replaced by ampersands? (If that is the case, I could rebuild
> the corrent path from this information before passing environ to the
> real application.)

I suggested that RewriteRule line just to show what the error was (the
infinite recursion) and not as a solution to your empty PATH_INFO
original question.

Did you try my second answer's suggestion?:

SetEnvIfNoCase Request_URI ^\index\.py(.*) PATH_INFO=$1

Regards, Clodoaldo

>
>
> On May 3, 3:11 pm, Clodoaldo Neto <[email protected]>
> wrote:
>> 2011/5/3 boscop <[email protected]>:
>>
>>
>>
>>
>>
>> > Hi,
>> > I'm on a free shared hosting account where I have no access to
>> > httpd.conf, but .htaccess. I have no shell access, but FTP and cPanel.
>> > Python is available via mod_python and mod_wsgi. I want to use one of
>> > the WSGI frameworks for my site. They all require that there is
>> > exactly one WSGI application (usually specified with
>> > 'WSGIScriptAlias / /path/to/app.wsgi' but this would only work in
>> > httpd.conf) which gets the requested path passed in
>> > environ['PATH_INFO']. Currently I have 'AddHandler wsgi-script .py'
>> > set in .htaccess, but this would cause apache to resolve the path and
>> > look for a wsgi script at that location, instead of passing the path
>> > to the main application. All frameworks that I checked out are based
>> > on there being only one application though (!). So I tried to use
>> > mod_rewrite to achieve the passing of the path to the main application
>> > like this:
>>
>> > RewriteEngine On
>> > RewriteRule ^(.*)$ /absolute/path/to/index.py$1 [QSA,L,PT]
>>
>> > However, this causes an internal server error (500) on any request,
>>
>> The error is an infinite recursion. This will avoid the recursion
>> although it still misses the path_info:
>>
>> RewriteRule ^(.*)$ /absolute/path/to/index.py?$1 [QSA,L,PT]
>>
>> Regards, Clodoaldo
>>
>> > and it says "More information about this error may be available in the
>> > server error log. Additionally, a 500 Internal Server Error error was
>> > encountered while trying to use an ErrorDocument to handle the
>> > request.". But no error was logged! (I confirmed that error logging
>> > usually works by removing that line and introducing other bugs. Also,
>> > having multiple wsgi apps and requesting them individually works,
>> > too).
>> > This leads me to my question: What would I have to write in .htaccess
>> > to cause apache to pass the requested path to the one WSGI application
>> > so that it correctly appears in environ['PATH_INFO'] and so that it
>> > also handles GET parameters correctly, (and why does the above line
>> > prevent error logging)?
>>
>> > --
>> > You received this message because you are subscribed to the Google Groups 
>> > "modwsgi" group.
>> > To post to this group, send email to [email protected].
>> > To unsubscribe from this group, send email to 
>> > [email protected].
>> > For more options, visit this group 
>> > athttp://groups.google.com/group/modwsgi?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "modwsgi" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/modwsgi?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to