And sorry if the wording is a bit misleading on that email - I actually solved 
the issue whilst I was writing it. To clarify - problem is definitely fixed, 
thanks :)

From: Andrew White [mailto:and...@computersforall.com.au]
Sent: Monday, 11 February 2013 11:46 AM
To: users@httpd.apache.org
Subject: RE: [users@httpd] Rewrite rules not working

Hey Igor,

Thanks for that.

I've turned it on and I think I've identified the problem, however I still 
can't quite find a fix. In the logs if I am using my original condition/rule 
and use mysite.com.au/test I see the following:

10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: 
/home/website/public_html/test -> test
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.+)$' to uri 'test'
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: 
/home/website/public_html/test -> test
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.+)$' to uri 'test'
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: 
/home/website/public_html/test -> test
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.*)$' to uri 'test'
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (2) [perdir 
/home/website/public_html/] rewrite 'test' -> 'http://www.mysite.com.au/test'
10.1.1.1 - - [11/Feb/2013:11:37:50 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b847d100/initial] (2) [perdir 
/home/website/public_html/] explicitly forcing redirect with 
http://www.mysite.com.au/test

However when I run it against just mysite.com.au I see:

10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.+)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.+)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.*)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (2) [perdir 
/home/website/public_html/] rewrite '' -> '://www.mysite.com.au/'
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (3) [perdir 
/home/website/public_html/] add per-dir prefix: ://www.mysite.com.au/ -> 
/home/website/public_html/://www.mysite.com.au/
10.1.1.1 - - [11/Feb/2013:11:38:16 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b845bc18/initial] (2) [perdir 
/home/website/public_html/] explicitly forcing redirect with 
http:/.makeitmine.com.au/home/website/public_html/://www.mysite.com.au/

Note that the environment variable I'm trying to set (SSL on/off) isn't being 
set. As such, it's not seeing the http/https prefix and assuming it's a 
relative internal path!

When I'm trying to set the environment variable, I use the following code:

       RewriteCond %{HTTPS} =on
        RewriteRule ^(.+)$ - [env=ps:https]
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.+)$ - [env=ps:http]

The RegEx of ^(.+)$ expects a minimum of 1 character, which there is not to 
match! I modified it as follows:

       RewriteCond %{HTTPS} =on
        RewriteRule ^(.*)$ - [env=ps:https]
        RewriteCond %{HTTPS} !=on
        RewriteRule ^(.*)$ - [env=ps:http]

And now it matches, even on 0 characters!

Thanks again for your help, problem solved :)

10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.*)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.*)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] strip per-dir prefix: /home/website/public_html/ ->
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (3) [perdir 
/home/website/public_html/] applying pattern '^(.*)$' to uri ''
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (2) [perdir 
/home/website/public_html/] rewrite '' -> 'http://www.mysite.com.au/'
10.1.1.1 - - [11/Feb/2013:11:44:57 +1100] 
[mysite.com.au/sid#b81d24f8][rid#b8478208/initial] (2) [perdir 
/home/website/public_html/] explicitly forcing redirect with 
http://www.mysite.com.au/

From: Igor Cicimov [mailto:icici...@gmail.com]
Sent: Monday, 11 February 2013 10:58 AM
To: users
Subject: RE: [users@httpd] Rewrite rules not working


RewriteLog i think was the statement but please check the docs too
On 11/02/2013 10:34 AM, "Andrew White" 
<and...@computersforall.com.au<mailto:and...@computersforall.com.au>> wrote:
Hi Igor,

Thanks for your help, but this doesn't seem to work.

>From a bit of testing, it looks like the RewriteRule starting with "/" simply 
>doesn't catch anything.

Any other ideas? Or are there any logs I can check/set up for mod_rewrite?

Thanks all!

Andrew

From: Igor Cicimov [mailto:icici...@gmail.com<mailto:icici...@gmail.com>]
Sent: Friday, 8 February 2013 11:26 PM
To: users
Subject: Re: [users@httpd] Rewrite rules not working



On Fri, Feb 8, 2013 at 10:51 AM, Andrew White 
<and...@computersforall.com.au<mailto:and...@computersforall.com.au>> wrote:

Hi all,

I've been writing a rewrite rule to try and redirect all of our traffic from 
mysite.com.au<http://mysite.com.au> to 
www.mysite.com.au<http://www.mysite.com.au>. I also need to conditionally 
redirect depending on SSL enabled or not.

I've hacked on a bit from 
askapache.com<http://www.askapache.com/htaccess/http-https-rewriterule-redirect.html>
 to create a variable that holds either http or https dependently. Below is the 
code I'm using:



    RewriteCond %{HTTPS} =on

    RewriteRule ^(.+)$ - [env=ps:https]

    RewriteCond %{HTTPS} !=on

    RewriteRule ^(.+)$ - [env=ps:http]

    RewriteCond %{HTTP_HOST} ^mysite\.com\.au(.*)$ [NC]

    RewriteCond %{HTTP_HOST} !^$

    RewriteRule ^(.*)$ 
%{ENV:ps}://www.mysite.com.au/$1<http://www.mysite.com.au/$1> [L,R=301]



This works fine for URLs with paths (e.g. 
mysite.com.au/foo<http://mysite.com.au/foo> redirects to 
www.mysite.com.au/foo<http://www.mysite.com.au/foo>) and does the http and 
https switch fine.

However when just accessing the domain (just 
mysite.com.au<http://mysite.com.au>) it redirects 
tohttp://www.mysite.com.au/home/website/public_html/:/www.mysite.com.au/

I'm sure it's something very small and basic I'm missing - if someone could 
point it out, that'd be appreciated.

Thanks!

Andrew

Try this way

RewriteCond %{HTTP_HOST} ^mysite\.com\.au$ [NC]

    RewriteCond %{HTTP_HOST} !^$

    RewriteRule ^/(.*)$ 
%{ENV:ps}://www.mysite.com.au/$1<http://www.mysite.com.au/$1> [L,R=301]

Reply via email to