You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Timothy Stone <ci...@petmystone.com> on 2003/09/10 19:18:55 UTC

Re: [users@httpd] In Rewrite Loop -- please help [LOGS]

Timothy Stone wrote:

> Timothy Stone wrote:
> 
>> List,
>>
>> I'm running Apache 2.0.46 on Windows 2000 SP 2.
>>
>> I have five domains, all variations on a theme (all examples):
>>
>> www.mycity.com
>> www.mycity.org
>> www.mycity.net
>> www.mycityevents.com
>> www.mycitystate.gov
>>
>> All five domains are entered in DNS identically for round robin load 
>> sharing.
>>
>> Currently, www.mycity.com, acts as the "primary" domain for all of 
>> these domains. So a client requesting .org|.net|.gov are immediately 
>> redirected  (R=permanent) to "dot-com" via a RewriteRule (conf 
>> follows) in a virtual host.
>>
>> Now, it has been decided that the "dot-gov" address will act as the 
>> primary domain. It might seem as simple as editing the ServerName, 
>> ServerAlias and appropiate RewriteRule and RewriteConds, but alas, no. 
>> It sends me into a loop, which can be seen in the RewriteLog; it kills 
>> the client but, fortunately, Apache gracefully handles it (a recent 
>> fix in the 2.0.4x series I believe).
>>
>> I edit the conf (shown below in "Broken, Loopy Conf") changing very 
>> little, it nearly amounts to:
>>
>> s/city\.com/citystate\.gov/g
>>
>> Both working and broken httpd.conf follow, edited of course. Any 
>> suggestions on what could be causing this loop would be very helpful. 
>> I'm too close at this point to see anything wrong I think.
>>
>> ***** WORKING CONF ****
>> # Section 1: Global Configuration
>>
>> Listen 80
>>
>> # Section 2: Main Server Configuration
>>
>> ...
>> # If this is not set to valid DNS name for your host, server-generated
>> # redirections will not work.  See also the UseCanonicalName directive.
>> ...
>> ServerName www.mycity.com:80
>>
>> # UseCanonicalName: Determines how Apache constructs self-referencing
>> # URLs and the SERVER_NAME and SERVER_PORT variables.
>> # When set "Off", Apache will use the Hostname and Port supplied
>> # by the client.  When set "On", Apache will use the value of the
>> # ServerName directive.
>> #
>> UseCanonicalName Off
>>
>> ### Section 3: Virtual Hosts
>>
>> NameVirtualHost *
>>
>> # main vhost
>> <VirtualHost *>
>>     ServerName www.mycity.com
>>     ServerAlias mycity.com  *.mycity.com
>>
>>     DocumentRoot "C:/usr/local/apache2-01/htdocs/mycity"
>>     RewriteEngine on
>>     RewriteCond %{HTTP_HOST} !^www.mycity.com [nocase] [OR]
>>     #For internal use, prevents images from being blocked
>>     RewriteCond %{HTTP_HOST} !^10\.*
>>     RewriteCond %{HTTP_HOST} !^$
>>     RewriteRule ^/(.*) http://www.mycity.com/$1 [R=permanent]
>>     RewriteLog logs/rewrite.log
>>     RewriteLogLevel 0
>> </VirtualHost>
>>
>> <VirtualHost *>
>>     ServerName www.mycityevents.com
>>     ServerAlias mycityevents.com  *.mycityevents.com
>>     DocumentRoot "C:/usr/local/apache2-01/htdocs/mycity"
>>     RewriteEngine on
>>     RewriteCond %{HTTP_HOST} ^www.mycityevents.com [nocase]
>>     RewriteRule ^/(.*) http://www.mycityevents.com/rec/ [R=permanent]
>>     RewriteLog logs/rewrite_rec.log
>>     RewriteLogLevel 9
>> </VirtualHost>
>>
>>
>> ***** BROKEN, LOOPY CONF ****
>>
>> * recall, i'm simply trying to change the rewrite rule, but I'm also 
>> changing the server name because this is now the "primary" domain.
>>
>> ### Section 1: Global Configuration
>>
>> Listen 80
>>
>> ### Section 2: Main Server Configuration
>>
>> ...
>> # If this is not set to valid DNS name for your host, server-generated
>> # redirections will not work.  See also the UseCanonicalName directive.
>> ...
>> ServerName www.mycitystate.gov:80
>>
>> # UseCanonicalName: Determines how Apache constructs self-referencing
>> # URLs and the SERVER_NAME and SERVER_PORT variables.
>> # When set "Off", Apache will use the Hostname and Port supplied
>> # by the client.  When set "On", Apache will use the value of the
>> # ServerName directive.
>> #
>> UseCanonicalName Off
>>
>> ### Section 3: Virtual Hosts
>>
>> NameVirtualHost *
>>
>> <VirtualHost *>
>>     ServerName www.mycitystate.gov
>>     ServerAlias mycitystate.gov  *.mycitystate.gov
>>
>>     DocumentRoot "C:/usr/local/apache2-01/htdocs/mycity"
>>     RewriteEngine on
>>     RewriteCond %{HTTP_HOST} !^www.mycitystate.gov [nocase] [OR]
>>     #For internal use, prevents images from being blocked
>>     RewriteCond %{HTTP_HOST} !^10\.*
>>     RewriteCond %{HTTP_HOST} !^$
>>     RewriteRule ^/(.*) http://www.mycitystate.gov/$1 [R=permanent]
>>     RewriteLog logs/rewrite.log
>>     RewriteLogLevel 0
>> </VirtualHost>
>>
>> <VirtualHost *>
>>     ServerName www.mycityevents.com
>>     ServerAlias mycityevents.com  *.mycityevents.com
>>     DocumentRoot "C:/usr/local/apache2-01/htdocs/mycity"
>>     RewriteEngine on
>>     RewriteCond %{HTTP_HOST} ^www.mycityevents.com [nocase]
>>     RewriteRule ^/(.*) http://www.mycityevents.gov/rec/ [R=permanent]
>>     RewriteLog logs/rewrite_rec.log
>>     RewriteLogLevel 0
>> </VirtualHost>
> 
> 
> List,
> 
> I think I'm onto the problem. I took a look at the host itself and found 
> numerous hung processes. Restarting the box (par for the Windoze 
> environment) may have cleared up the problem. I'm testing the server 
> now. Whew...RewriteLogLevel 6 is a lot of stuff. In exght minutes it was 
> over 147M; either I have more traffic on these boxes then I realized, or 
> something hiccupped in Windoze. I'd consider the latter before the former.
> 
> One note, and hindsight proves me wrong for doing this, is the confs 
> shown are *not exactly* what was on the server, but a cleaned up 
> version. I had two vhosts with the different states commented out. My bad.
> 
> Any followup would continue to be appreciated.
> 
> Tim

List,

Could this be a client problem? Attached are two logs matching the event 
with the access and the rewrite. I seem to be having intermmitent success.

Rewrite is at "9" for the most verbose.

I removed IPs and domains to protect the innocent.

Thanks in advance.
Tim