BTW, the rewrite.conf file can also be used as a back door for more easily enabling .htaccess files in the document root direct. Just include:
AllowOverride FileInfo Need to think why I don’t have an option to for enabling them anyway. Graham > On 13 Jan 2016, at 10:40 AM, Graham Dumpleton <[email protected]> > wrote: > > If you want to try it out, I have pushed up new feature to allow rewrite > rules. > > Currently on develop branch of mod_wsgi Git repo. > > pip install -U > https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip > <https://github.com/GrahamDumpleton/mod_wsgi/archive/develop.zip> > > The rewrite rules can be placed in the rewrite.conf file in the server root > directory. > > Better still, use the —rewrite-rules option to specify the location of your > own file containing the rewrite rules. > > For example: > > $ mod_wsgi-express start-server tests/envirowsgi --rewrite-rules rewrite.conf > --log-level 'info rewrite:trace8' --log-to-terminal > Server URL : http://localhost:8000/ <http://localhost:8000/> > Server Root : /tmp/mod_wsgi-localhost:8000:502 > Server Conf : /tmp/mod_wsgi-localhost:8000:502/httpd.conf > Error Log File : /dev/stderr (info rewrite:trace8) > Rewrite Rules : /Users/graham/Projects/mod_wsgi/rewrite.conf > Request Capacity : 5 (1 process * 5 threads) > Request Timeout : 60 (seconds) > Queue Backlog : 100 (connections) > Queue Timeout : 45 (seconds) > Server Capacity : 20 (event/worker), 20 (prefork) > Server Backlog : 500 (connections) > Locale Setting : en_AU.UTF-8 > > You don’t need a RewriteEngine On directive. > > Just include your RewriteCond/RewriteRule directives. > > Avoid using RewriteBase as may well screw up what mod_wsgi rules do and not > sure it is needed anyway in that context. > > The rules should be applied before static file matching, so can also be used > to remap static files as well. > > A really simple example of a rewrite.conf file would be: > > RewriteRule ^/?$ /blah [R=301] > > This would cause access to root of site using just ‘/‘ to be redirected to > ‘/blah’. Everything else should flow through as normal. > > If you find any issues or have problems constructing the rules you want then > let me know. > > Graham > >> On 13 Jan 2016, at 9:42 AM, Graham Dumpleton <[email protected] >> <mailto:[email protected]>> wrote: >> >> >>> On 13 Jan 2016, at 9:23 AM, Graham Dumpleton <[email protected] >>> <mailto:[email protected]>> wrote: >>> >>>> >>>> On 13 Jan 2016, at 4:14 AM, Gavin Cannizzaro <[email protected] >>>> <mailto:[email protected]>> wrote: >>>> >>>> Hi all, >>>> >>>> I love mod_wsgi-express. As someone relatively new to Linux, Apache, >>>> Python, and WSGI, "express" works as advertised by getting me up and >>>> running. I'm already using it in production. >>>> >>>> When I use a rewrite rule in the custom configuration, though, it is >>>> completely ignored. >>>> >>>> My test case is just a few lines, calling mod_wsgi-express with a standard >>>> test script, a port number, a document-root, and an included config. >>>> >>>> The included config has just >>>> >>>> RewriteEngine On >>>> RewriteRule ^ /blah [R=301] >>>> >>>> (I don't actually want redirects, but it's a stronger test.) >>>> >>>> In any case, I don't see the rule being picked up. I know that I have >>>> mod_rewrite enabled, and it works in a regular Apache site. And even with >>>> express, I'm sure that the module is loaded, based on an IfModule rule >>>> that sets a header. >>>> >>>> Is this supposed to be supported with express? Does it need to be used in >>>> conjunction with some other configuration? I've seen Graham suggest >>>> rewrite rules in reference to various issues, but not specifically where >>>> "express" is involved. >>> >>> Unfortunately it isn’t that simple. Because mod_wsgi-express uses rewrite >>> rules to allow the WSGI application to overlay a static document root, >>> adding rewrite rules at the end of the configuration file at top level will >>> not be recognised, or if put inside of a Location directive will usually >>> screw things up. Any rewrite rules likely need to be supplied separately >>> with an option used to point at the rewrite file. The rules would then need >>> to be included in a particular location within the generated configuration >>> just after the rewrite rules mod_wsgi uses. Even then there may be >>> complications or rules would need to be written a certain way. >>> >>> The alternative for simple redirect rules is to use the redirect directives >>> from mod_alias. >>> >>> https://httpd.apache.org/docs/2.4/mod/mod_alias.html >>> <https://httpd.apache.org/docs/2.4/mod/mod_alias.html> >>> >>> You can thus quite happily use something like: >>> >>> Redirect /dog /cat >>> RedirectMatch ^/?$ /index >>> >>> For more complicated rewrite rules, would need to see what exactly you are >>> trying to do. >>> >>> I will though have a quick try at adding a —rewrite-rules option and >>> include it at where I think they need to be and see what is possible. >>> >>> BTW, if using Apache 2.4, it is very easy to enable rewrite trace logs by >>> doing: >>> >>> mod_wsgi-express start-server tests/environ.wsgi --include-file >>> redirect.conf --log-level 'info rewrite:trace8' --log-to-terminal >>> >>> That is, use —log-level with quoted option ‘info rewrite:trace8’. >>> >>> That way you can see whether rewrite rules are applied at all, what they >>> are being given and what it generates. >> >> A quick test of hacking into the generated configuration file: >> >> <Directory '/tmp/mod_wsgi-localhost:8000:502/htdocs/'> >> <IfDefine MOD_WSGI_DIRECTORY_INDEX> >> DirectoryIndex None >> </IfDefine> >> <IfDefine MOD_WSGI_DIRECTORY_LISTING> >> Options +Indexes >> </IfDefine> >> <IfDefine MOD_WSGI_CGI_SCRIPT> >> Options +ExecCGI >> </IfDefine> >> <IfDefine MOD_WSGI_CGID_SCRIPT> >> Options +ExecCGI >> </IfDefine> >> <IfDefine !MOD_WSGI_STATIC_ONLY> >> RewriteEngine On >> Include /Users/graham/Projects/mod_wsgi/rewrite.conf >> RewriteCond %{REQUEST_FILENAME} !-f >> <IfDefine MOD_WSGI_DIRECTORY_INDEX> >> RewriteCond %{REQUEST_FILENAME} !-d >> </IfDefine> >> <IfDefine MOD_WSGI_SERVER_STATUS> >> RewriteCond %{REQUEST_URI} !/server-status >> </IfDefine> >> RewriteRule .* - [H=wsgi-handler] >> </IfDefine> >> Order allow,deny >> Allow from all >> </Directory> >> >> and then having in rewrite.conf: >> >> RewriteRule ^/?$ /blah [R=301] >> >> does appear to work. >> >> BTW, another way might have been to use in the include configuration file: >> >> <Directory /some/path/to/document/root> >> AllowOverride FileInfo >> </Directory> >> >> then add a .htaccess file to the document directory and add rewrite rules in >> there. >> >> Rewrite rules in .htaccess files are fiddly to get right though and does >> look a bit like they trying to add them there also stuffs up the mod_wsgi >> rewrite rules as no longer falls through to WSGI application and get not >> found instead. >> >> 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]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/modwsgi. For more options, visit https://groups.google.com/d/optout.
