Suppose, not entirely hypothetically, that you're using Apache ProxyPass directives as a reverse proxy to map
/someurl/
on your website to another web server. You generally have to redirect the URL with the trailing slash , but of course you would like a request for a plain '
/someurl
' to also work right instead of just getting a 404 status response. Here, 'work right' means that you'll generate a redirection from '
/someurl
' to '
/someurl/
'.
It's certainly possible to do this with one of the various Apache directives for explicit redirections (I'd use
RedirectMatch
). But often there's an easier way: use a real filesystem directory. If
somedir
is a directory in the Apache document root and you send a request for '
/somedir
', Apache's default behavior is to send exactly the redirection we want. And Apache doesn't care if the '
/somedir/
' URL is being diverted somewhere other than the filesystem (via ProxyPass or other directives); it will still send that redirection regardless.
So we can just do '
mkdir /docroot/someurl
' and everything will work. The directory contents don't matter; I tend to put a README file there with a note about how the directory is just there for the redirection and actual contents in it will be ignored.
(This redirection trick happens automatically if you're using
.htaccess
files in a directory to control, say, internal redirections . However there are various reasons for not using
.htaccess
files, including centralizing your configuration in one easily visible place instead of spraying it all over the filesystem in a bunch of nominally invisible files.)
Back when I wrote my entry on ProxyPass , I theorized about using this trick. I can now say that we've actually done this in our configuration and it works fine.
(This trick is a very old one, of course; I'm sure people have been doing it in Apache for ages. I just feel like writing it down explicitly for various reasons.)