On Fri, 21 Jul 2006, Michael Glaser wrote:
> Mike Miller wrote:
>> On Fri, 21 Jul 2006, Michael Glaser wrote:
>>
>>> Problem: Need to redirect 'www.domain.name/xy' to 'xy.other.domain.net'.
>>>
>>> Armed with my very limited knowledge of regular expressions and
>>> mod_rewrite, I tried the following two configurations (one at a time)
>>> and neither worked:
>>>
>>> RewriteCond %{REQUEST_URI} ^/[xX][yY]/(.*) [NC]
>>> RewriteRule ^/[xX][yY]/(.*) http:/xy.other.domain.net/$1 [R=301,L]
>
>> You're sure that first one didn't work?
>
> Upon further testing, yes and no. With the expression listed above, here is
> what happens:
>
> www.domain.name/xy --> xy.other.domain.net/
> www.domain.name/XY --> error
> www.domain.name/XY/ --> xy.other.domain.net/
> www.domain.name/xY --> error
> www.domain.name/xy/ --> xy.other.domain.net/
> www.domain.name/Xy --> error
> www.domain.name/Xy/ --> xy.other.domain.net/
>
> www.domain.name/xy/about --> xy.other.domain.net/about (works!)
>
> The first URL (all lowercase) works without a trailing slash, but not
> the others. I wonder why this is happeing.
Of course you've discovered the problem. I didn't know you wanted to
forward if there was no final slash, but you do, and that is the problem.
The first one shouldn't work, but I think you might have another rule in
your file for xy that you have forgotten.
So I think you want two rules:
RewriteCond %{REQUEST_URI} ^/[xX][yY]/(.*) [NC]
RewriteRule ^/[xX][yY]/(.*) http:/xy.other.domain.net/$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^/[xX][yY] [NC]
RewriteRule ^/[xX][yY] http:/xy.other.domain.net/ [R=301,L]
The problem with your idea here...
> RewriteCond %{REQUEST_URI} ^/[xX][yY](.*) [NC]
> RewriteRule ^/[xX][yY](.*) http:/xy.other.domain.net/$1 [R=301,L]
...is that it will work for /xyfoo and you don't want it to do that.
> Now this gets me even closer to exactly what I wanted. I removed the
> last '/' in the expression. Now when the URL ends in 'xy' in any
> combination of case, the desired page appears 'xy.other.domain.net/'.
>
> If I include a trailing slash in the original request, the URL in the
> redirected page include an extra one at the end of the address, but the
> page does open. It would look like this:
>
> www.domain.name/xy/ --> xy.other.domain.net//
>
> Much closer, and this is probably good enough, but not exactly correct.
> Is there an easy way to solve this?
I think my recommendation will work.
Mike