You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Denise Mangano <De...@complusdata.com> on 2009/02/16 19:56:49 UTC

[users@httpd] Apache/2.2.9, RH Enterprise, mod_rewrite, RewriteRule not working as expected

Hello,

I am having some difficulties with the Rewrites in my apache config.
I've been at this for a couple of weeks now and I admit I am having a
very difficult time with the syntax.  I've read the mod_rewrite
documentation as well as the URL rewriting guide, but nothing I try
seems to be working.  I am now behind in my project so I caved and need
to reach out to the pros for help =) 

I've searched the mailing list archives but can't seem to find my exact
situation.  I have a web site - www.example.com.  I am trying to
configure my apache to redirect all mobile users to m.example.com.  I
can get that part of it to work easily.  However, the problem is that
there are about a hundred subdirectories under www.example.com and for
mobile users I need to redirect them to the same subdirectory on
m.example.com. I would prefer not to have to write out a RewriteRule for
each subdirectory because we are constantly adding more every day and
maintenance is a bear.

Objective:
requests for www.example.com get redirected to http://m.example.com
requests for www.example.com/abc gets redirected to
http://m.example.com/abc
requests for www.example.com/def/index.html gets redirected to
http://m.example.com/def/index.html

The following is in my httpd.conf (I came across this suggestion based
on one of my google search):
   #Redirect Mobile users by exclusion
   RewriteCond %{HTTP_USER_AGENT}  !^.*Linux.*$ [NC]
   RewriteCond %{HTTP_USER_AGENT}  !^.*Win.*$ [NC,OR]
   RewriteCond %{HTTP_USER_AGENT}  ^.*Windows\s+CE.*$ [NC]
   RewriteCond %{HTTP_USER_AGENT}  !^.*OS\s+(X|9).*$ [NC]
   RewriteCond %{HTTP_USER_AGENT}  !^.*Solaris.*$ [NC]
   RewriteCond %{HTTP_USER_AGENT}  !^.*BSD.*$ 
   RewriteRule ^/$ http://m.example.com/ [R]

My site by default always looks for index.html.  So this works great -
requests for www.example.com/index.html are properly forwarded to the
VirtualHost I have set up for m.example.com and it services the mobile
version of index.html that I have there.  Now I needed to modify the
Rewrite rule to tackle the subdirectories.

Based on my internet searches I've tried to change my RewriteRule to the
following:
   RewriteRule ^/(.*) http://m.example.com/$1 
This actually does redirect to the same subdirectory on the mobile
Virtual Host, so I believe I got at least half of it right.  I requested
www.example.com/abc and was properly redirected to m.example.com/abc.
However, it is taking  ALL requests to www.example.com and forwards it
to m.example.com... even the non-mobile users.  This is confusing me
greatly since the RewriteCond by exclusion worked fine before - it
appears that suddenly the condition tests are failing.

Any advice/help anyone can offer is greatly appreciated.  Thanks in
advance!
 
Denise Mangano



---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: users-unsubscribe@httpd.apache.org
   "   from the digest: users-digest-unsubscribe@httpd.apache.org
For additional commands, e-mail: users-help@httpd.apache.org