LiteSpeed Support Forums

LiteSpeed Support Forums (http://www.litespeedtech.com/support/forum/index.php)
-   LiteSpeed Cache (http://www.litespeedtech.com/support/forum/forumdisplay.php?f=30)
-   -   Litespeed cache + vB + vBSEO conflicts/issues ? (http://www.litespeedtech.com/support/forum/showthread.php?t=4650)

eva2000 01-30-2011 04:24 PM

Litespeed cache + vB + vBSEO conflicts/issues ?
 
Thanks to Mert over at vBSEO, I got a test license installed on local server, from what I can see, this is what is happening. vBulletin varnish xml plugin has extra code to assign custom cookies to members and guests (session prefix + imgloggedin yes) and also code to strip guest visitors of the session id/hash so that varnish will cache guests without cookies. Litespeed cache's .htaccess tries to match these plugin cookies so you're telling litespeed cache to cache php pages where imloggedin=yes isn't set and where userid/password cookie isn't set.

default litespeed cache .htaccess i am using

Code:

RewriteCond %{HTTP_COOKIE} !zzimloggedin=yes
RewriteCond %{HTTP_COOKIE} !zzuserid=
RewriteCond %{HTTP_COOKIE} !zzpassword=
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{QUERY_STRING} !s=[a-fA-F0-9]{32}
RewriteCond %{QUERY_STRING} !product=vbnexus
RewriteCond %{REQUEST_URI} !^(login|register|usercp|private|profile|cron|image)\.php$
RewriteCond %{REQUEST_URI} !^admincp
RewriteRule ^(.*\.php)?$ - [L,E=Cache-Control:max-age=300]

Varnish plugin stripping guests of session id/hash

PHP Code:

if($vbulletin->userinfo['userid'] <= 0)
{
$vbulletin->session->vars['sessionurl']  = '';
$vbulletin->session->vars['sessionurl_q']  = '';


Now what is happening is when vbseo is enabled, it seems to be reintroducing the guest visitors session id/hash into the cookies for guests.

vBSEO Disabled

This is what i see with vbseo disabled, only zzlastactivity and zzlastvisit cookies are set when varnish plugin enabled as it strips sessionid/hash.

http://vbtechsupport.com/litespeed/v...essionhash.png

Header for vBSEO disabled with varnish plugin enabled

http://vbtechsupport.com/litespeed/v...hah_header.png

vBSEO Enabled

Now when you enable vbseo, session id/hash for guests is reintroduced along with vbseo_loggedin=yes/deleted for members/guests, which in theory if you used varnish cache (in apache+varnish setup), varnish wouldn't cache the vbseo page as it has cookies vbseo_loggedin so varnish vcl would need adjusting. But it doesn't explain why litespeed cache isn't caching the page other than proper detection of vbseo_loggedin cookie in htaccess ?

http://vbtechsupport.com/litespeed/v...essionhash.png

Header when vBSEO enabled with Varnish plugin enabled

http://vbtechsupport.com/litespeed/v...ash_header.png

litespeed htaccess might need additional for guests caching somewhere ?

Code:

RewriteCond %{HTTP_COOKIE} vbseo_loggedin=deleted

eva2000 01-30-2011 04:47 PM

NiteWave asked me to try this htaccess for vBSEO + litespeed cache, while it works to allow vBSEO to function, litespeed isn't caching the pages

Code:

                                                                   
                                                                   
                                                                   
                                           
# Comment the following line (add '#' at the beginning)
# to disable mod_rewrite functions.
# Please note: you still need to disable the hack in
# the vBSEO control panel to stop url rewrites.
RewriteEngine On

# Some servers require the Rewritebase directive to be
# enabled (remove '#' at the beginning to activate)
# Please note: when enabled, you must include the path
# to your root vB folder (i.e. RewriteBase /forums/)
#RewriteBase /

#RewriteCond &#37;{HTTP_HOST} !^www\.yourdomain\.com
#RewriteRule (.*) http://www.yourdomain.com/forums/$1 [L,R=301]

RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ vbseo_sitemap/vbseo_getsitemap.php?sitemap=$1 [L]

RewriteCond %{REQUEST_URI} !(admincp/|modcp/|cron|vbseo_sitemap)
RewriteRule ^((archive/)?(.*\.php(/.*)?))$ vbseo.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/(admincp|modcp|clientscript|cpstyles|images)/
RewriteRule ^(.+)$ vbseo.php [QSA]

RewriteCond %{HTTP_COOKIE} vbseo_loggedin=deleted
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) - [L,E=Cache-Control:max-age=120]


mistwang 01-31-2011 08:41 AM

The expire time of cookie "vbseo_loggedin" is set to 1 second earlier than the current time, maybe it is intended to remove that cookie, not to send it back to web server as request cookie.

If that is the case, just test if "vbseo_loggedin" presents, if it does, user logged in, no cache, if it does not, cache the page.

NiteWave 02-05-2011 08:51 PM

I overlooked this post... so following may works:
Quote:

# Comment the following line (add '#' at the beginning)
# to disable mod_rewrite functions.
# Please note: you still need to disable the hack in
# the vBSEO control panel to stop url rewrites.
RewriteEngine On

# %Some servers require the Rewritebase directive to be
# enabled (remove '#' at the beginning to activate)
# Please note: when enabled, you must include the path
# to your root vB folder (i.e. RewriteBase /forums/)
#RewriteBase /

#RewriteCond %{HTTP_HOST} !^www\.yourdomain\.com
#RewriteRule (.*) http://www.yourdomain.com/forums/$1 [L,R=301]

RewriteRule ^((urllist|sitemap_).*\.(xml|txt)(\.gz)?)$ vbseo_sitemap/vbseo_getsitemap.php?sitemap=$1 [L]

RewriteCond %{REQUEST_URI} !(admincp/|modcp/|cron|vbseo_sitemap)
RewriteRule ^((archive/)?(.*\.php(/.*)?))$ vbseo.php [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !/(admincp|modcp|clientscript|cpstyles|images)/
RewriteRule ^(.+)$ vbseo.php [QSA]

RewriteCond %{HTTP_COOKIE} !vbseo_loggedin
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) - [L,E=Cache-Control:max-age=120]

eva2000 02-06-2011 01:54 PM

Thanks i think this is same as the code you set me last time (that didn't work right). Will test this again :)

NiteWave 02-06-2011 04:37 PM

there is only 1 but important difference:

RewriteCond %{HTTP_COOKIE} vbseo_loggedin=deleted
changed to
RewriteCond %{HTTP_COOKIE} !vbseo_loggedin

bhanuprasad1981 02-14-2011 07:07 PM

hi eva have you really got any working .htaccess for vbseo+litespeed combination?

eva2000 02-16-2011 12:48 PM

not yet, been a bit busy lately but will get back to testing soon

Quote:

Originally Posted by NiteWave (Post 23451)
there is only 1 but important difference:

RewriteCond %{HTTP_COOKIE} vbseo_loggedin=deleted
changed to
RewriteCond %{HTTP_COOKIE} !vbseo_loggedin

Thanks .. will try later on... been a bit busy :o

mistwang 02-16-2011 09:20 PM

Based on my investigation on this, the latest ruleset should work, however, there are a few URLs need to be excluded like "/login/wait", so the cache related rules are
Code:

#%LiteSpeed Cache rules
RewriteCond %{HTTP_COOKIE} !vbseo_loggedin
RewriteCond %{ORG_REQ_URL} !(login/wait|admincp|(login|register|usercp|private|profile|cron|image)\.php))
RewriteCond %{REQUEST_METHOD} ^HEAD|GET$
RewriteCond %{QUERY_STRING} ^$
RewriteRule (.*) - [L,E=Cache-Control:max-age=120]


bhanuprasad1981 02-17-2011 07:10 PM

so these rules should be added along with vbseo normal rules ?


All times are GMT -7. The time now is 07:41 PM.