Re: Question for using mod_rewrite to do proxying

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Feb 23, 2009 at 11:20 AM, Michael Roberts <mr3789@xxxxxxxxx> wrote:
> Hi everyone,
>
> I have the following rules with mod_rewrite:
>
> RewriteEngine on
> RewriteCond %{HTTP_HOST} ^www\.example\.com$
> RewriteRule ^blog/(.*?)$ http://blog.example.com/$1 [P]
>
>
> RewriteCond %{HTTP_HOST} ^example.com$
>
> RewriteRule ^(.*)?$ http://www.example.com/$1 [L,R=301]
>
> What I'm trying to achieve, and it works up to 90% of my expectations, is
> that any hits to http://www.example.com/blog proxies over to
> http://blog.example.com. They're two physically separate boxes.
>
> The issue I have here is that if I visit
> http://blog.example.com/some/dir/foo.php it works fine. However, if I go to
> http://www.example.com/blog/some/dir/foo.php, it does not work properly.
>
> Is there a major flaw in my rules that's preventing me from doing this proxy
> of all requests from http://www.example.com/blog to http://blog.example.com/
> ?
>
> Thanks all!
>

First, just in case you're unaware, there is a mod_proxy which might
be better suited to what you're doing, unless you have a specific
reason for not using it.

How exactly is it not working? What behavior do you see when you go to
http://www.example.com/blog/some/dir/foo.php ? Does it work without
the "/some/dir", e.g., if you just go to
http://www.example.com/blog/foo.php ?


I can see a few things off hand, but not if they're causing the problem.

First, I always start my rewrite rules (the ones that are supposed to
be anchored at the beginning of the URI) with "^/", where as you just
have "^". I'm not sure if mod_rewrite is smart enough to handle the
difference, but I think the canonical URI that the pattern gets
matched against does in fact start with a '/', so if the module isn't
smart enough to automatically insert that, then your pattern isn't
going to match. It looks like all the examples in the doc start with
"^/" as well, so I would definitely give that a try and see if it
helps.

Second is that the ? is a little wierd in your rewrite rule:
RewriteRule ^blog/(.*?)$ http://blog.example.com/$1 [P]
I know some regex engines support a reluctant match, not sure if this
is what you're going for, and not sure if mod_rewrite supports it, but
it any event, I don't think it serves any purpose since there's
nothing after it, and it may very well be screwing things up.

In any event, your first step in debugging rewrite issue should always
be to turn on your rewrite log. This will help you find out what, if
any, of your rules are actually getting matched, and what the result
is.

Hope some of that helps, good luck!
-Brian

-- 
Feel free to contact me using PGP Encryption:
Key Id: 0x3AA70848
Available from: http://pgp.mit.edu/

---------------------------------------------------------------------
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@xxxxxxxxxxxxxxxx
   "   from the digest: users-digest-unsubscribe@xxxxxxxxxxxxxxxx
For additional commands, e-mail: users-help@xxxxxxxxxxxxxxxx


[Index of Archives]     [Open SSH Users]     [Linux ACPI]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Squid]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]

  Powered by Linux