Re: need to write a fitler based on request header

2008-02-28 Thread J. Peng
On Thu, Feb 28, 2008 at 8:30 PM, Torsten Foertsch
[EMAIL PROTECTED] wrote:
 On Thu 28 Feb 2008, J. Peng wrote:

  currently I write it with PerlAccessHandler, it also works. is it
   right with this handler?

  Do you want to send a redirect to the browser (HTTP code 3xx)?

I use apache's inner redirect rather than the 3xx external redirection.


 If yes then it
  can be done in an access handler as well. If you simply want to send the
  document in /pathA or /pathB then I think you'd prefer something *before* the
  core map_to_storage handler, that means a PerlTransHandler or a
  PerlMapToStorageHandler since otherwise you'd need to fill out the finfo
  field by yourself, see

   http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_finfo_



thanks for the info.

   no, mod_rewrite can't rewrite requests based on Accept-Encoding header.

  yes, something like this:

  RewriteCond %{HTTP:Accept-Encoding} gzip [OR]
  RewriteCond %{HTTP:Accept-Encoding} deflate
  RewriteRule ^(.*) /pathA/$1 [PT,L]

  RewriteRule ^(.*) /pathB/$1 [PT,L]

  or as an external redirect:

  RewriteCond %{HTTP:Accept-Encoding} gzip [OR]
  RewriteCond %{HTTP:Accept-Encoding} deflate
  RewriteRule ^(.*) /pathA/$1 [R,L]

  RewriteRule ^(.*) /pathB/$1 [R,L]

  Why do you think this wouldn't work?


I'll try it. thanks so much torsten.


Re: need to write a fitler based on request header

2008-02-28 Thread J. Peng
Hello Torsten,

I have tested your rewrite syntax like below:

Location /unzip
RewriteEngine On
RewriteCond %{HTTP:Accept-Encoding} gzip [OR]
RewriteCond %{HTTP:Accept-Encoding} deflate
RewriteRule ^/unzip/(.*) /gziped/$1 [PT,L]
/Location

Sorry it can't work.

Also I checked apache's official document for mod_rewrite:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

It says the rewriting conditions on http headers include only:

HTTP headers:
--
HTTP_USER_AGENT
HTTP_REFERER
HTTP_COOKIE
HTTP_FORWARDED
HTTP_HOST
HTTP_PROXY_CONNECTION
HTTP_ACCEPT


So as I've said, you can't rewrite the request based on
Accept-Encoding header.Is it?
Thanks.


On Thu, Feb 28, 2008 at 8:30 PM, Torsten Foertsch
[EMAIL PROTECTED] wrote:
 On Thu 28 Feb 2008, J. Peng wrote:

   no, mod_rewrite can't rewrite requests based on Accept-Encoding header.

  yes, something like this:

  RewriteCond %{HTTP:Accept-Encoding} gzip [OR]
  RewriteCond %{HTTP:Accept-Encoding} deflate
  RewriteRule ^(.*) /pathA/$1 [PT,L]

  RewriteRule ^(.*) /pathB/$1 [PT,L]

  or as an external redirect:

  RewriteCond %{HTTP:Accept-Encoding} gzip [OR]
  RewriteCond %{HTTP:Accept-Encoding} deflate
  RewriteRule ^(.*) /pathA/$1 [R,L]

  RewriteRule ^(.*) /pathB/$1 [R,L]

  Why do you think this wouldn't work?



Re: need to write a fitler based on request header

2008-02-28 Thread Torsten Foertsch
On Thu 28 Feb 2008, J. Peng wrote:
 Also I checked apache's official document for mod_rewrite:
 http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

Well, Apache 2.2 can, see
 http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritecond

Other things you should be aware of:
...
4.  %{HTTP:header}, where header can be any HTTP MIME-header name, can always 
be used to obtain the value of a header sent in the HTTP request. 
Example: %{HTTP:Proxy-Connection} is the value of the HTTP header 
``Proxy-Connection:''.
...

I wasn't aware that this is a feature only of 2.2+.

Torsten


need to write a fitler based on request header

2008-02-27 Thread J. Peng
Hello members,

I need to write an input filter based on the request headers.
If request includes a Accept-Encoding: gzip, deflate header, I
should redirect the request to /pathA.
If request doesn't include that header, I should redirect the request to /pathB.
(pathA and pathB are web document dirs on web server.)

How to do it? thanks.