Re: [users@httpd] Dynamic RewriteRule based on the URL

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

 



Boyle Owen wrote:
>> -----Original Message-----
>> From: Norman Khine [mailto:norman@xxxxxxxxx] 
>> Sent: Wednesday, September 06, 2006 9:23 AM
>> To: users@xxxxxxxxxxxxxxxx
>> Subject: [users@httpd] Dynamic RewriteRule based on the URL
>>
>> Hello,
>> Is it possible to create an Apache Rewrite rule so that the 
>> depending on
>> the sub-domain the server receives it is then re-written to a 
>> different
>> folder, for example, I have this working but want to reduce it to just
>> one rule:
>>
>> <VirtualHost *:80>
>>     ServerName  folder_A.domain.tld
>>     RewriteEngine On
>>     RewriteRule ^/(.*) http://localhost:9080/folder_A/$1 [P]
>>     RequestHeader set X-Base-Path folder_A
>>     ErrorLog       /var/log/apache2/folder_A-error_log
>>     CustomLog      /var/log/apache2/folder_A-access_log common
>> </VirtualHost>
>>
>> <VirtualHost *:80>
>>     ServerName  folder_B.domain.tld
>>     RewriteEngine On
>>     RewriteRule ^/(.*) http://localhost:9080/folder_B/$1 [P]
>>     RequestHeader set X-Base-Path folder_B
>>     ErrorLog       /var/log/apache2/folder_B-error_log
>>     CustomLog      /var/log/apache2/folder_B-access_log common
>> </VirtualHost>
>>     
>
> Take a look at RewriteCond - this allows you to make conditional
> redirects and so generate an if-else construct, eg:
>
> RewriteCond domainA
> RewriteRule to folder A
> RewriteCond domainB
> RewriteRule to folder B
>
> Of course, the rewrite directives then go in the main body of the config
> so they apply to all VHs. BTW, not sure if this is less or more
> work/effort than your original solution.. So I guess you're really
> looking for:
>
> RewriteRule to folder(domain)
>
> where the destination depends on the value of "domain"... I can't think
> of an easy way to do this - plough through the examples in
> http://httpd.apache.org/docs/2.2/misc/rewriteguide.html.
>
> Rgds,
> Owen Boyle
> Disclaimer: Any disclaimer attached to this message may be ignored. 
>
>
>   
>> etc...
>>
>>
>> So is there a nice way to reduce this to only one rule where if a
>> request is sent to folder_A.domain.tld the RewriteRule, 
>> RequestHandler,
>> ErrorLog, CustomLog entries are changed accordingly?
>>
>> Perhaps something like in the line of %{SERVER_NAME}:
>>
>> <VirtualHost *:80>
>>     ServerName  %{FOLDER_NAME}.domain.tld
>>     RewriteEngine On
>>     RewriteRule ^/(.*) http://localhost:9080/%{FOLDER_NAME}/$1 [P]
>>     RequestHeader set X-Base-Path %{FOLDER_NAME}
>>     ErrorLog       /var/log/apache2/%{FOLDER_NAME}-error_log
>>     CustomLog      /var/log/apache2/%{FOLDER_NAME}-access_log common
>> </VirtualHost>
>>
>>
>> Would this work and how would you set the %{FOLDER_NAME} if 
>> it does or is there a different approach?
>>
>> Many thanks
>>
>>
>> Norman
>>
>>
>> ---------------------------------------------------------------------
>> 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
>>
>>     
>  
>  
> This message is for the named person's use only. It may contain confidential, proprietary or legally privileged information. No confidentiality or privilege is waived or lost by any mistransmission. If you receive this message in error, please notify the sender urgently and then immediately delete the message and any copies of it from your system. Please also immediately destroy any hardcopies of the message. You must not, directly or indirectly, use, disclose, distribute, print, or copy any part of this message if you are not the intended recipient. The sender's company reserves the right to monitor all e-mail communications through their networks. Any views expressed in this message are those of the individual sender, except where the message states otherwise and the sender is authorised to state them to be the views of the sender's company.
>
> ---------------------------------------------------------------------
> 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
>
>
>   
Thanks for your reply, I was looking at the
http://httpd.apache.org/docs/2.2/misc/rewriteguide.html documentation
and perhaps something like this may work...

RewriteEngine on
RewriteCond   %{*HTTP_HOST*}                 *[^.]+*\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   *([^.]+)*\.host\.com(.*) http://localhost:9080/*$1*$2 [P]

RequestHeader set X-Base-Path %{*HTTP_HOST*}

#Not sure if the logs entry is correct

ErrorLog       /var/log/apache2/%{*HTTP_HOST*}-error_log
CustomLog      /var/log/apache2/%{*HTTP_HOST*}-access_log common

Cheers

Norman

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