httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From matt farey <matt.fa...@gmail.com>
Subject Re: [users@httpd] [STILL NOT WORKING] Dynamic RewriteRule based on the URL
Date Fri, 09 Mar 2007 15:22:35 GMT


Norman Khine wrote:
> Hi
> Tried this but still get the same error:
>
> 127.0.0.1 - - [09/Mar/2007:14:32:40 +0100]
> [rewrite.example/sid#191ae08][rid#1975450/initial] (4) RewriteCond:
> input='rewrite.example' pattern='^([a-z]+)\.rewrite\.example$' =>
> not-matched
>   
this means that the host name is rewrite.example rather than
subdomain.rewrite.example, so there is nothing to match which is why it
doesnt!
> here is the updated httpd.conf file
>
> <VirtualHost *:80>
>   ServerName rewrite.example
>   ServerAdmin khinester
>   DocumentRoot /Users/khinester/Sites/destinations/
>   RewriteEngine on
>   RewriteCond   %{HTTP_HOST} ^([a-z]+)\.rewrite\.example$
>   RewriteRule   /?(.*) /Users/khinester/Sites/destinations/%1/$1 [QSA,NC]
>   RewriteLog /tmp/rewrite.log
>   RewriteLogLevel 9
>   ErrorLog       /tmp/rewrite_example_log
> </VirtualHost>
>
> I don't understand then 'firstly the vhost stanza...' comment
>
>   
You are sending apache the hostname
subdomain.rewrite.example
but your vhost is for rewrite.example
so the hostname inside the vhost section will always be rewrite.example
UNLESS you place the vhost section first among all vhost sections and do
NOT have a default vhost section. somewhere else.
 Then the way apache works, if it gets a request for
subdomain.rewrite.example it will look for a vhost section with
servername subdomain.rewrite.exmple inside and of course you dont have
one - because you want to support many subdomains
so apache will serve the FIRST vhost by default when no servername matches.

It appears at the moment that apache is not doing this - your log shows
that the hostname coming into the vhost section with servername
rewrite.example was rewrite.example/

perhaps I am unclear as to what you are doing, I thought you were trying
to rewrite things like

subdomain.rewrite.example/stuff/
to
rewrite.example/subdomain/stuff

matt
> I also added the DocumentRoot, so that now when I type
> http://rewrite.example I get the index page on
> /Users/khinester/Sites/destinations
>
> but still when I type http://london.rewrite.example
>
> I get a 502 with the above rewrite error log.
>
> Also in the error log, I have:
>
> [Fri Mar 09 14:42:08 2007] [error] [client 127.0.0.1] (13)Permission
> denied: apr_global_mutex_lock(rewrite_log_lock) failed
> [Fri Mar 09 14:42:08 2007] [error] [client 127.0.0.1] (13)Permission
> denied: apr_global_mutex_unlock(rewrite_log_lock) failed
> [Fri Mar 09 14:42:08 2007] [error] [client 127.0.0.1] File does not
> exist: /Users/khinester/Sites/destinations/favicon.ico
>
> Any ideas?
>
> Cheers
>
> Norman
>
> matt farey wrote:
>   
>> Norman Khine wrote:
>>     
>>> Hi all,
>>> Sometimes back I posted this message, asking if there is a way to get
>>> http://folder.domain.tld to point to a /home/users/folder - well this is
>>> just a simplification of the request - but I still have not found a way
>>> to get this to work... here is a link to the original post.
>>>
>>> http://mail-archives.apache.org/mod_mbox/httpd-users/200609.mbox/date
>>>
>>> Post title '[users@httpd] Dynamic RewriteRule based on the URL'
>>>
>>> Well, now I have a bit of time, I though I tackle this again, so I
>>> started from basics ;) First tried to get the example to work from
>>>
>>> http://httpd.apache.org/docs/2.2/misc/rewriteguide.html - for Virtual
>>> Users Hosts
>>>
>>> here is my httpd.conf
>>>
>>> <VirtualHost *:80>
>>>   ServerName rewrite.example
>>>   ServerAdmin khinester
>>>   RewriteEngine on
>>>   RewriteCond   %{HTTP_HOST}                 ^[^.]+\.rewrite\.example$
>>>   RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
>>>   RewriteRule   ^([^.]+)\.rewrite\.example(.*)
>>> /Users/khinester/Sites/destinations/$1$2
>>>   RewriteLog /tmp/rewrite.log
>>>   RewriteLogLevel 9
>>>   ErrorLog       /tmp/rewrite_example_log
>>> </VirtualHost>
>>>
>>> in my /etc/hosts i have the following two entries:
>>>
>>>
>>> 127.0.0.1 rewrite.example
>>> 127.0.0.1 london.rewrite.example
>>>
>>>
>>> Now when I go to http://rewrite.example I get my root Apache page, this
>>> is correct as I have not specified anywhere else to point this at -
>>> perhaps this may be the problem?
>>>
>>> Then when I go to http://london.rewrite.example - I get a 502 Bad
>>> Gateway error
>>>
>>> Here is the rewrite.log output
>>>
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (3) applying pattern
>>> '^(.+)' to uri '/favicon.ico'
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (4) RewriteCond:
>>> input='rewrite.example' pattern='^[^.]+\.rewrite\.example$' => not-matched
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (1) pass through
>>> /favicon.ico
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (2) init rewrite
>>> engine with requested uri /favicon.ico
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (3) applying pattern
>>> '^(.+)' to uri '/favicon.ico'
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (4) RewriteCond:
>>> input='rewrite.example' pattern='^[^.]+\.rewrite\.example$' => not-matched
>>> 127.0.0.1 - - [09/Mar/2007:13:08:56 +0100]
>>> [rewrite.example/sid#188ae08][rid#1975450/initial] (1) pass through
>>> /favicon.ico
>>>
>>> On my machine, /Users/khinester/Sites/destinations has the following
>>> structure
>>>
>>> index.html
>>> |-- london
>>> |   |-- images
>>> |   |-- index.html
>>> |-- liverpool
>>> |   |-- images
>>> |   |-- index.html
>>>
>>>
>>> ....
>>>
>>>
>>> So I was hoping that if I type http://london/rewrite.example to see the
>>> london/index.html page - which is not the case ;(
>>>
>>> I don't see what I am doing wrong here, any pointers much appreciated.
>>>
>>> Cheers
>>>
>>> Norman
>>>
>>>
>>>
>>>   
>>>       
>> firstly the vhost stanza must be first if it is to catch all the non
>> existent 3rd level domains
>> *.rewrite.example
>>
>>
>> but your rule could be
>>
>>   RewriteCond   %{HTTP_HOST} ^([a-z]+)\.rewrite\.example$
>>   RewriteRule   /?(.*) /Users/khinester/Sites/destinations/%1/$1 [QSA,NC]
>>
>> "only if there is a 3rd level domain to rewrite.example"
>> "grab everything after leading slah, rewrite to 
>> /Users/khinester/Sites/destinations/
>>
>> plus whatever the 3rd level domain was  plus /
>> plus whatever the request uri was without the leading slash
>>
>>
>>
>>     
>
>
>
> ---------------------------------------------------------------------
> 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
>
>
>   

-- 



---------------------------------------------------------------------
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


Mime
View raw message