Is there a way to make Python SimpleHTTPServer supports mod_rewrite?
I'm trying things with Ember.js with leveraging History API as the location API, and to make it work, I have to :
1) add some vhosts config in WAMP (not simple), or
2) run python -m simpleHTTPServer (very simple)
So when I opened it in the browser, localhost:3000
and clicked around the navigation (about and users for example), it worked well. The URLs are changed by Ember.js to localhost:3000/about
and localhost:3000/users
respectively.
But when I tried to open localhost:3000/about
directly in new tab, the python web server simply returns 404.
I had my .htaccess redirecting everything to index.html, but I suspect python simple web server doesn't really read the htaccess file (am I right on this?)
I've tried downloading PHP 5.4.12 and run the built in web server, the url and htaccess mod_rewrite works well. But I'm still reluctant to upgrade from stable 5.3 to (probably still unstable enough) 5.4.12, so if there's a way to support mod_rewrite in python simple web server, that would be preferrable.
Thanks for the answer.
No mod_rewrite in Python servers I am afraid, unless you run python scripts behind an Apache server, a resource-costly solution.
Try Cherrypy (http://www.cherrypy.org/), which allows you to manage your page handlers, and very simply makes clean URLs.
By modifying pd40's answer, I came up with this which doesn't redirect, it does your traditional "send index.html instead of 404". Not at all optimized, but it works for testing and development which is all I needed.
SimpleHTTPServer does not support apache modules and does not respect .htaccess, because it isn't apache. it won't work with php either.
If you know the cases you need to redirect you can subclass SimpleHTTPRequestHandler and do a redirect. This redirects any missing file requests to /index.html