I would like to use lighttpd\'s mod_rewrite to allow requests without a specific file extension. For instance, I would like the following mappings to automatically work:
Cassy and natbro got this very nearly right, but as user102008 commented, this erroneously rewrites any directory index. Adding a url.rewrite-once matching anything ending with a '/' seems to make it work.
url.rewrite-once = ( "^(.*)/$" => "$1/" )
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )
Without having tested it, but you can give it a shot:
url.rewrite-once = (
"^([^?]*)(\?.*)?$" => "$1.php$2",
)
Basically it means
and you rewrite it to the first part, include the .php
and add the last part again.
Again: I haven't tested it yet.
yes
^(.*).php $1 [L,R,NC,QSA]
that would be for .htaccess in a directory
^/(.*).php http://same.site/$1 [L,R,NC,QSA]
where your domain is 'same.site' because it needs to redirect for the URL to change (as opposed to proxy)
cassie's answer above is just about right. i would suggest dropping the trailing comma and using url-rewrite-if-not-file (available since 1.4.x lighttpd). this lets you serve other files that exist in the same directory without them getting rewritten.
url.rewrite-if-not-file = ( "^([^?]*)(\?.*)?$" => "$1.php$2" )