Live data from Hacker News

URL Rewriting for Beginners

addedbytes.com

1–10 of 16 posts

Re: URL Rewriting for Beginners

#2
I'm part of the "I don't do this myself, but I manage people who do" crowd. It's always good to see these types of articles on here. They keep us from being totally ignorant about the mechanics of our own projects. Thanks!

Re: URL Rewriting for Beginners

#3
post #2

I'm part of the "I don't do this myself, but I manage people who do" crowd. It's always good to see these types of articles on here. They keep us from being totally ignorant about the mechanics of our own projects. Thanks!

Doing that with web.py is easy and fun, takes at most half an hour, worth playing with at least once.

Re: URL Rewriting for Beginners

#4
It needs to be pointed out that this kind of trick is essentially a workaround for the awful URLs caused by the "the URL is the path of the handler" scheme that Apache and PHP like to encourage.

It's almost always a better idea to do this another way. Note that the distinction between the "handler" part of the URL, the remaining "path-like" part and the query string is already exposed in the CGI variables (SCRIPT_NAME, PATH_INFO, and QUERY_STRING). The handlers can do this magic on their own. Doing it by placing important application code into the apache configuration for the site strikes me as very confusing.

Re: URL Rewriting for Beginners

#5
Bah, mod_rewrite is for sissies! Parse the url in your handler code!

   
     SetHandler mod_python
     PythonHandler DoStuff
   
Any request starting with /dostuff gets passed to DoStuff handler and you can parse the url pieces in the handler itself:

   from mod_python import apache

   def handler(req):
     req.content_type = 'text/plain'
     print >> req, 'uri = %s' % req.uri
     print >> req, 'filename = %s' % req.filename
     print >> req, 'path_info = %s' % req.path_info
     return apache.OK

Re: URL Rewriting for Beginners

#6
post #4

It needs to be pointed out that this kind of trick is essentially a workaround for the awful URLs caused by the "the URL is the path of the handler" scheme that Apache and PHP like to encourage. It's almost always a better idea to do this another way. Note that the distinction between the "handler" part of the URL, the remaining "path-like" part and the query string is already exposed in the CGI variables (SCRIPT_NAM…

Agreed. Indeed, most of the rewrites I've seen look like this: RewriteRule .* /index.php

Re: URL Rewriting for Beginners

#7
Wow, I suppose that this is a big issue for people, isn't it. I'd forgotted since I'm using Django. Django makes you craft your URLs from the start. Granted, you can still create crap URLs if you really want to, but Django makes it harder to do.

Re: URL Rewriting for Beginners

#8
post #5

Bah, mod_rewrite is for sissies! Parse the url in your handler code! SetHandler mod_python PythonHandler DoStuff Any request starting with /dostuff gets passed to DoStuff handler and you can parse the url pieces in the handler itself: from mod_python import apache def handler(req): req.content_type = 'text/plain' print >> req, 'uri = %s' % req.uri print >> req, 'filename = %s' % req.filename print >> req, 'path_info…

[deleted]

Re: URL Rewriting for Beginners

#9
I used to do this with my flat file PHP files, but then I started using a framework. I suggest you do too.

Kohana (PHP Framework) has pretty good URL rewriting resembling RoR's. /controller/method/variable. (/user/edit/1005 would reference application/controllers/user.php, class User_Controller, function user(1005).) POST/GET/PUT/etc are retained.

Re: URL Rewriting for Beginners

#10
post #5

Bah, mod_rewrite is for sissies! Parse the url in your handler code! SetHandler mod_python PythonHandler DoStuff Any request starting with /dostuff gets passed to DoStuff handler and you can parse the url pieces in the handler itself: from mod_python import apache def handler(req): req.content_type = 'text/plain' print >> req, 'uri = %s' % req.uri print >> req, 'filename = %s' % req.filename print >> req, 'path_info…

[deleted]
Post reply on HN