Krist van Besien <[EMAIL PROTECTED]> wrote: > On 2/12/06, Fabian Keil <[EMAIL PROTECTED]> wrote: > > I would like to redirect /foo//bar (and /foo///bar etc.) > > to /foo/bar. So far I failed and I'm not sure if I did something > > wrong or if it's impossible with the Redirect directive. > > > > At the moment my Apache server answers /foo//bar with 200 and sends > > the document /foo/bar without letting the user know that the url was > > wrong. If there is an easy way to disable this "feature" I'd like > > to hear about it as well. > > That multiple slashes are treated as one is a feature of the > underlying filesystem. Apache gets a requests for /foo//bar, applies > the necessary translations to it, and asks the underlying OS for > <webroot>/foo//bar. It gets a document back, so all is OK from > Apache's viewpoint.
Makes sense, is there an easy way to disable it anyway?
For example on apache.org you get a file not found if
you use more than one slash in a row. I could live with that.
> If you want double slashes in URLs to generate a redirect you are
> probably better of using a Rewrite
>
> For example:
>
> RewriteRule (^.*)/{2,}(.*$) $1/$2 [R,L]
>
> (disclaimer: This is of the top of my head, didn't actually test
> this...)
Thanks for the suggestion.
* seems to be greedy on my apache version, therefore foo////bar
will be rewritten to foo///bar only.
Using *? results in a server error and I have no better idea how
to make * ungreedy.
Now I use:
RewriteRule ^([^/]*)/{2,}(.*$) http://www.fabiankeil.de/$1/$2 [R=Permanent,L]
It only works for multiple slashes after the first directory level,
but ATM that's good enough.
Fabian
--
http://www.fabiankeil.de/
signature.asc
Description: PGP signature
