Re: need to write a fitler based on request header
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
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
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
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.