У меня есть сайт www.whatsthatbug.com, обслуживаемый через varnish / nginx / php-fpm. Я использую wordpress с плагином wptouch pro. Этот плагин обслуживает мобильную версию сайта для мобильных пользователей.
Вот как я это делаю в Varnish. Кажется, он работает нормально, если вы переходите непосредственно на m.whatsthatbug.com из мобильного браузера, и если вы переходите на любую страницу, кроме главной, с помощью домена www.whatsthatbug.com. Но если вы перейдете на главную страницу (просто www.whatsthatbug.com) из мобильного браузера, вам будет доступна обычная версия сайта. Я здесь что-то явно не так делаю? Какие-либо предложения?
sub vcl_recv {
if (req.http.host ~ "m.whatsthatbug.com") {
set req.http.user-agent = "iphone";
}
if ( req.http.user-agent ~
"(.*iphone.*|.*ipod.*|.*incognito.*|.*webmate.*|.*android.*|.*dream.*|.*cupcake.*|.*froyo.*|.*blackberry9500.*|.*blackberry9520.*|.*blackberry9530.*|.*blackberry9550.*|.*blackberry 9800.*|.*blackberry 9780.*|.*iemobile/7.0.*|.*webos.*|.*s8000.*|.*bada.*|.*googlebot-mobile.*)" )
{
set req.http.host = "m.whatsthatbug.com";
}
if (req.request == "PURGE") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
return(lookup);
}
if (req.url ~ "^/$") {
unset req.http.cookie;
}
}
Если вы используете Varnish 2.1 или новее (что вам следует), проблема, вероятно, в том, что регулярное выражение в вашем VCL чувствительно к регистру. Фрагмент из Varnish 2.1 FAQ
Регулярные выражения чувствительны к регистру или нет? Могу я его изменить?
В версии 2.1 и новее в регулярных выражениях по умолчанию учитывается регистр. В более ранних версиях регистр не учитывался.
Чтобы изменить это для одного регулярного выражения в 2.1, используйте (? I) в начале.
См. Справочные страницы PCRE для получения дополнительной информации.
Я могу сказать, что используемый вами VCL не подходит, например, для iPhone, который может идентифицировать себя таким образом;
Mozilla / 5.0 (iPhone; U; ЦП, например Mac OS X; en) AppleWebKit / 420 + (KHTML, например Gecko) Версия / 3.0 Mobile / 1A543a Safari / 419.3