Mailing List Archive

RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc]
What's the canonical way to redirect the following?

http://host/xyz[/abc]
to
http://xyz.host/[abc]

The following works

RedirectMatch ^xyz(.*) http://xyz.host$1

but suffers from the problem that

http://host/xyz123

is redirected to

http://xyz.host123

which is not intended.

I suppose one way would be to use a pair of redirects:

RedirectMatch ^xyz http://xyz.host
RedirectMatch ^xyz/(.*) http://xyz.host/$1

but is there a better way?

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re: RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc] [ In reply to ]
> The following works
>
> RedirectMatch ^xyz(.*) http://xyz.host$1
>
> but suffers from the problem that
>
> http://host/xyz123

maybe RedirectMatch ^xyz(/.*)? http://xyz.host$1

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re: RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc] [ In reply to ]
On 17 August 2012 15:02, Eric Covener <covener@gmail.com> wrote:
>> The following works
>>
>> RedirectMatch ^xyz(.*) http://xyz.host$1
>>
>> but suffers from the problem that
>>
>> http://host/xyz123
>
> maybe RedirectMatch ^xyz(/.*)? http://xyz.host$1

That won't match

http://host/xyz

which should redirect to

http://xyz.host/

> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
> For additional commands, e-mail: users-help@httpd.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re: RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc] [ In reply to ]
>> maybe RedirectMatch ^xyz(/.*)? http://xyz.host$1
>
> That won't match
>
> http://host/xyz

question mark was part of the regex not punctuation, but not sure the
redirect w/o trailing slash is okay.

rejiggered to always have the trailing slash:

RedirectMatch ^xyz/?(.*) http://xyz.host/$1

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re: RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc] [ In reply to ]
On 17 August 2012 15:30, Eric Covener <covener@gmail.com> wrote:
>>> maybe RedirectMatch ^xyz(/.*)? http://xyz.host$1
>>
>> That won't match
>>
>> http://host/xyz
>
> question mark was part of the regex not punctuation,

Very sorry, my bad, I should have read more carefully.

Your suggestion will work fine.

> but not sure the redirect w/o trailing slash is okay.

It's OK if it is a directory.

If xyz is a directory, then without the redirect, http://host/xyz should display

http://host/xyz/index.html

If http://host/xyz is redirected to

http://xyz.host/

This should result in displaying

http://xyz.host/index.html

as intended.

Maybe your solution should be added as an example to the RedirectMatch docs?

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org
Re: RedirectMatch - http://host/xyz[/abc] => http://xyz.host/[abc] [ In reply to ]
On 17 August 2012 15:58, sebb <sebbaz@gmail.com> wrote:
> On 17 August 2012 15:30, Eric Covener <covener@gmail.com> wrote:
>>>> maybe RedirectMatch ^xyz(/.*)? http://xyz.host$1
>>>
>>> That won't match
>>>
>>> http://host/xyz
>>
>> question mark was part of the regex not punctuation,
>
> Very sorry, my bad, I should have read more carefully.
>
> Your suggestion will work fine.

Actually it does have a problem, because it matches
http://host/xyz123
and redirects to
http://xyz.host/
this is because it can match without the trailing context.

So I think one needs to anchor the regex:
RedirectMatch ^xyz(/.*)?$ http://xyz.host$1

That seems to work OK.

Thanks for putting me on the right track.

>> but not sure the redirect w/o trailing slash is okay.
>
> It's OK if it is a directory.
>
> If xyz is a directory, then without the redirect, http://host/xyz should display
>
> http://host/xyz/index.html
>
> If http://host/xyz is redirected to
>
> http://xyz.host/
>
> This should result in displaying
>
> http://xyz.host/index.html
>
> as intended.
>
> Maybe your solution should be added as an example to the RedirectMatch docs?

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org