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/

Attachment: signature.asc
Description: PGP signature

Reply via email to