Search squid archive

Re: Redirecting user based on user agent string or incoming URL

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

 



Reuben S. wrote:
Hi,

I have an existing url_rewrite_program script which redirects the user
based on the host they came in on.  I also want to redirect the user
to different URLs based on their user agent string (for example, if
the string has the word "iphone" in it).  Does anyone know how I'd
accomplish this with a single url_rewrite_program?  I've checked out a
few squid options, but I haven't found what I'm looking for yet.
Should I be using urlgroups or something?

I've found some information on how to do this, but no details.  For
instance, this email says what I'd like to do is possible, but doesn't
say how:

http://www.squid-cache.org/mail-archive/squid-users/200803/0802.html

Thanks,

Reuben

Before I start, please reconsider any use of URL re-writing carefully. It introduces a number of problems that are avoidable by proper use of HTTP messages.


When Henrik means there is that you can use ACLs to control what requests get re-written. For example;

 acl iphone browser ...
 url_rewrite_access allow iphone
 url_rewrite_access deny all

... will cause on the requests with User-Agent: header matching the pattern you enter to be re-written.


Do redirection of ore than one type, you will need something more sophisticated than just a URL-rewriter.


The best alternative we have is deny_info 'redirecting' requests matching an ACL to some other URL. For example;

 acl iphone browser ...
 acl site dstdomain www.example.com
 http_access deny site iphone
 deny_info http://iphone.example.com/ iphone

... will redirect any requests made from an iphone agent for www.example.com to iphone.example.com

NP: deny_info is limited in current Squid to one destination URL.. However if you are willing to use a build of 3.2 (alpha code right now) you can dynamically generate the deny_info URL and for example change the domain name but keep the path and other parts of the URL.


A more tricky and complex setup would be to mix external_acl_type helper with a url-rewrite helper. Where the external_acl_type helper registers some background key outside Squid indicating that the next URL X from client IP Y needs to be re-written to Z. Then the URL-rewriter when it seeks IP Y requesting URL X does the re-write.

Amos
--
Please be using
  Current Stable Squid 2.7.STABLE7 or 3.0.STABLE23
  Current Beta Squid 3.1.0.16

[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux