Oh, didn’t know that. I only tested overriding for POST case with GET being the one which goes through normally.
Let me think some more then. Graham > On 29 Sep 2015, at 4:20 pm, Josh Rodriguez <[email protected]> wrote: > > Hmm, not sure that this is going to work...not having luck getting the GET > script to run... > > According to the mod_actions documentation: > > "Also note that Script with a method of GET will only be called if there are > query arguments present (e.g., foo.html?hi). Otherwise, the request will > proceed normally." > > > > > On Monday, September 28, 2015 at 6:36:58 PM UTC-7, Graham Dumpleton wrote: > > > On 29 Sep 2015, at 11:21 am, Graham Dumpleton <graham.d...@ <>gmail.com > > <http://gmail.com/>> wrote: > > > > > >> On 29 Sep 2015, at 11:17 am, Graham Dumpleton <graham.d...@ <>gmail.com > >> <http://gmail.com/>> wrote: > >> > >> > >>> On 29 Sep 2015, at 10:38 am, Josh Rodriguez <hoba...@ <>gmail.com > >>> <http://gmail.com/>> wrote: > >>> > >>> I'm trying to use Flask (via mod_wsgi) and mod_dav in the same location. > >>> I want mod_wsgi/Python to handle GET and POST requests (because I want to > >>> return enhanced HTML directory listings) while mod_dav handles methods > >>> like OPTIONS and PROPFIND. > >>> > >>> I'm getting an 400 error with the log message "The URL contains > >>> extraneous path components. The resource could not be identified." when I > >>> try to access a resource via WebDAV. > >>> > >>> I think I've figured out what's up. > >>> > >>> I'm using WSGIScriptAlias as follows: > >>> > >>> `WSGIScriptAlias / /usr/local/apache2/htdocs/test/test.wsgi` > >>> > >>> But when I use a WebDAV client to connect to `/files/`, I find that the > >>> path that's passed to mod_dav has turned into: > >>> > >>> `/usr/local/apache2/htdocs/test/test.wsgi/files` > >>> > >>> Which makes sense, given the alias directive. > >>> > >>> My question is, is there a way to keep this from happening for WebDAV > >>> requests? I'm assuming I can't do anything in Flask, that I need to catch > >>> and modify the request before it reaches mod_dav. > >> > >> As a first guess, try adding: > >> > >> <Location /files> > >> SetHandler default-handler > >> </Location> > >> > >> I am not sure whether this will interact with WebDav properly or not, but > >> I think would normally stop mod_wsgi at least interfering with requests > >> under that URL. It may be necessary to work out what the handler name for > >> WebDav is and use it, although from memory I suspect it doesn’t use the > >> handler concept. > > > > Okay. Didn’t grok what you want properly. > > > > That will only disable it for selected sub URLs, not by method type. > > > > I will have to think some more. Unfortunately the Limit/LimitExcept > > directives don’t I believe work for handlers, only auth control. > > Lets try again. > > Presuming you want the whole site to be WebDav, but with GET/POST only > redirect to a Python script for outputting something different, try the > following: > > 1. Use WSGIScriptAlias to mount your Flask application to generate the > special listing under a special unique sub URL which isn’t going to match > anything valid that WebDav may generate. > > WSGIScriptAlias /.my-special-directory-listing > /usr/local/apache2/htdocs/test/test.wsgi > > 2. Enable mod_actions in Apache configuration. > > 3. Add a Script directive mapping GET/POST to that special Python script. > > Script GET /.my-special-directory-listing > Script POST /.my-special-directory-listing > > It is possible that the original information about the URL used may not be in > the normal WSGI environ variables where Flask expects them. You may need to > use a WSGI middleware around Flask to tweak the WSGI environ variables, > copying values from different values that Apache passes through. Look through > what you might get for the following to see where the original details may > lie. > > CONTEXT_DOCUMENT_ROOT: '/Library/WebServer/Documents' > CONTEXT_PREFIX: '' > DOCUMENT_ROOT: '/Library/WebServer/Documents' > PATH_INFO: '/index.html.en' > PATH_TRANSLATED: '/Library/WebServer/Documents/index.html.en' > QUERY_STRING: '' > REDIRECT_STATUS: '200' > REDIRECT_URL: '/index.html.en' > REQUEST_METHOD: 'POST' > REQUEST_URI: '/' > SCRIPT_FILENAME: '/Library/WebServer/Documents/environ.wsgi' > SCRIPT_NAME: '/.special-listing’ > > This may be necessary due to how Apache does internal redirects to invoke the > script for that method type. > > Please let me know the results as I will be curious. > > Graham > > -- > You received this message because you are subscribed to the Google Groups > "modwsgi" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at http://groups.google.com/group/modwsgi > <http://groups.google.com/group/modwsgi>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "modwsgi" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
