Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Httpd Wiki" for change 
notification.

The "RewriteMisc" page has been changed by SeanGaragan:
http://wiki.apache.org/httpd/RewriteMisc?action=diff&rev1=4&rev2=5

Comment:
Updating with header routing as I could not find this anywhere else

  == Look somewhere else for that image ==
- 
  If the image isn't in the /images/ directory, look in /images1/, /images2/, 
and /images3/ for it as well.
  
  {{{
@@ -23, +22 @@

  RewriteCond /usr/local/apache/htdocs/images3/%{REQUEST_FILENAME} -f
  RewriteRule ^ /usr/local/apache/htdocs/images3/%{REQUEST_FILENAME} [L]
  }}}
- 
  == Redirect Everything ==
- 
  I want all requests to my site to get sent to a certain page. Perhaps for a 
"system is down for maintenance" condition, or perhaps there's really only one 
page here. So, for example, let's send everything to '''page.html'''
  
  {{{
  RewriteEngine On
  RewriteRule !^/page\.html$ /page.html [PT]
  }}}
- 
  Or, if you want all pages mapped to a handler that knows what to do with that 
page:
  
  {{{
@@ -40, +36 @@

  RewriteCond $1 !=/handler.php
  RewriteRule ^(.*) /handler.php?uri=$1 [PT]
  }}}
- 
- 
  = Connecting to Tomcat =
  == Problem: ==
  We are using the 2.2 branch of Apache HTTP Server as frontend while all 
requests with a jsp extension should be served by our tomcat backend server on 
Port 8009.
@@ -53, +47 @@

  
  ProxyPassReverse / ajp://localhost:8009/
  }}}
- 
  == Discussion: ==
  Mod_rewrite passes all requests which are ending with .jsp to mod_proxy 
([[Flags/P]]). We use the Apache JServ Protocol (ajp), this means the modules 
[[http://httpd.apache.org/docs/trunk/mod/mod_proxy_ajp.html|mod_proxy_ajp]] and 
mod_proxy must be loaded into the server configuration.
  
@@ -63, +56 @@

  
  == Recipe: ==
  Using mod_rewrite, mod_proxy and mod_proxy_balancer.
+ 
  {{{
  RewriteEngine On
  RewriteRule ^/(.+\.php)$ balancer://myphpcluster/$1 [P]
  
  <Proxy balancer://myphpcluster>
      BalancerMember http://10.0.0.1 smax=10 loadfactor=20
-     BalancerMember http://10.0.0.2 
+     BalancerMember http://10.0.0.2
      ProxySet maxattempts=2
  </Proxy>
  
  ProxyPassReverse / http://10.0.0.1/
  ProxyPassReverse / http://10.0.0.2/
  }}}
- 
  == Discussion: ==
  ''A brief description may be provided in the future.''
  
  For a list of available ProxyPass parameters see the 
[[http://httpd.apache.org/docs/trunk/mod/mod_proxy.html#proxypass|mod_proxy 
documentation]].
  
  '''Note:''' The directive ProxySet is undocumented. You can use this 
directive in order to set additional parameters for a balancer or a worker, 
because the following does not work as expected:
+ 
  {{{
  # maxattempts=2 and other paramters are not recognized this way
  RewriteRule ^/(.+\.php)$ balancer://myphpcluster/$1 [P] maxattempts=2
  }}}
- 
  = Log executable file access =
- 
  We wish to create a log file that logs accesses to executable files, wherever 
they are in the filesystem, and whatever file extension they have.
  
  {{{
@@ -97, +89 @@

  RewriteRule ^ - [E=exec:1]
  CustomLog /var/logs/exec-cgi.log combined env=exec
  }}}
- 
  == Discussion ==
- 
  The LA-U syntax does a look-ahead to find out what the value of a particular 
variable will be later on. This requires a sub-request, and that results in 
something of a performance hit. Consider using the ScriptLog directive instead. 
However, the technique used here can be used for a larger class of problems, 
when a variable isn't available at request time, but will be later on.
  
+ = Using HTTP Headers for routing =
+ == Problem: ==
+ Using a custom HTTP header for rewrite rules to allow calls to be dynamically 
routed
+ 
+ == Recipe: ==
+ Using mod_rewrite, mod_proxy and custom headers sent from a client, we have 
been able to rewrite end points for web service calls routed through a proxy to 
multiple backends.
+ 
+ {{{
+ RewriteEngine on
+ RewriteLog "logs/rewrite.log"
+ #RewriteLogLevel 5
+ 
+ # The following rule routes to the first server
+ RewriteCond %{HTTP:X-WS-Version} Version1
+ RewriteRule (.*) http://myserver1.com:7001$1 [P,L]
+ 
+ # The following rule routes to the second server
+ RewriteCond %{HTTP:X-WS-Version} Version2
+ RewriteRule (.*) http://myserver2.com:7001$1 [P,L]
+ }}}
+ == Discussion: ==
+ We needed this for internal routing of web service calls proxied from a web 
app server to our backend servers.  We wanted a way to have multiple web 
service engines in behind with the client not knowing anything about where the 
call was routed to.  The service bus could not always handle dynamic routing 
but the client could set a header value with routable data.  As well, this type 
of routing is far more efficient than having a service bus pull the message 
apart and route based on that, even on SOAP headers.
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-unsubscr...@httpd.apache.org
For additional commands, e-mail: docs-h...@httpd.apache.org

Reply via email to