Sorry, this entry is only available in Français.
In the vast majority of cases, http redirections are installed on the http server.
However, the redirection cannot be installed in the http server config in some cases.
Example: mobile phone redirection.
We want to redirect all mobile phones from http://www.mysite.com to http://mobile.mysite.com
The client type is done with the HTTP User-Agent header sent by the browser. Problem: Squid will put in cache only one version of the query to http://www.mysite.com. The response from the cache will probably be the home page, not the 301 redirection.
It’s also possible to configure the HTTP server to add the Vary: User-Agent
header to tell Squid to store one version by browser. With this the cache will be split (one cache per browser), lowering a lot the cache efficiency.
Here is the solution:
################################### # we redirect mobiles to mobile.mysite.com url_rewrite_program /etc/squid/redirect_mobile.sh acl symbian browser Symbian acl iphone browser iP(hone|od) acl mobile_url dstdomain mobile.monsite.com url_rewrite_access deny mobile_url url_rewrite_access allow symbian url_rewrite_access allow iphone url_rewrite_access deny all
And the /etc/squid/redirect_mobile.sh
script simply contains:
#!/bin/sh while read line do echo "301:http://mobile.mysite.com" done
Notes:
- The mobile detection method is far from being exhaustive. If you know a simple method covering 95% of browsers, I’m interested!
- With more recent Squid versions (3, 2.HEAD), you can use a better method using internal redirectors.
Links:
Sorry, this entry is only available in Français.