Redirigint els estàtics de WordPress

Aquesta setmana vaig tindre l’oportunitat d’anar a una xerrada de WPO en la que li donaven un bon repas a com millorar el rendiment a un blog funcionant amb WordPress, per lo que vag decidir posar-li les piles al meu i millorar-li el rendiment una mica.

Un dels temes que es va parla va ser, el de separar els estàtics (o uploads) del domini principal per a que els navegadors carregin en paral·lel el contingut i les imatges, reduint el temps de carrega de las pagines.

En el meu cas, volia mantenir el mateix directori que configura WordPress per defecte, ja que el meu servidor no es res del mon i ja em semblava correcte el sistema que te per organitzar els estàtics

Llavors, l’únic que s’ha de fer es modificar la configuració del virtualhost afegint un altre virtualhost que apunti al directori on WordPress desa els estàtics.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<VirtualHost *:80>
    RewriteEngine On
    RewriteOptions Inherit
    DocumentRoot /web/httpd/wp-content/uploads
    ServerName w1.estatic.net
    FileETag All
    <Directory "/web/httpd/wp-content/uploads">
        Allow from all
        Options +Indexes FollowSymLinks
        AllowOverride All
    </Directory>
    <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresDefault "access plus 1 month"
    </IfModule>
    <IfModule mod_headers.c>
        RequestHeader unset Cookie
        Header unset Set-Cookie
    </IfModule>
    <IfModule mod_deflate.c>
        DeflateCompressionLevel 9
        <FilesMatch "\.(js|css|php)$">
            SetOutputFilter DEFLATE
            BrowserMatch ^Mozilla/4 gzip-only-text/html
            BrowserMatch ^Mozilla/4\.0[678] no-gzip
            BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
        </FilesMatch>
    </IfModule>
</VirtualHost>

Però llavors, es quan arriba Google i ens diu que tenim dos urls diferents amb el mateix contingut:

  • http://web.com/wp-content/uploads/any/mes/imatge
  • http://w1.estatic.net/any/mes/imatge

Si es una web nova i google encara no ha enllaçat cap imatge amb la url de la web, podria-m deixar-lo aixi tot i que ens arrisquem a que algú (amb males pretensions) comenci a enllaçar imatges amb la url de la web i fastiguejar-nos la vida.

En el meu cas no ho podia deixar aixi ja que tenia imatges en post antics enllaçats amb la url antiga per lo que vaig tindre que redireccionar-lo d’alguna manera

Després de molt buscar i testejar, vaig descobrir com fer-ho. S’ha de afegir una directiva de redirecció a la configuració del virtual host en el nostre blog, just després d’on definim el directori. I dic de fer-lo al virtualhost perquè vaig provar de ferla en el .htaccess (que seria lo lògic) però no vaig aconseguir fer-lo funcionar (si algú ho ha aconseguir, si us plau, que ho comenti en la caixa de comentaris com ho ha fet i s’ho agrairé enormement)

1
2
3
4
5
6
7
8
9
<VirtualHost *:80>
    ServerName web.com
    ...
    <Directory "/web/httpd">
        ...
    </Directory>
    RedirectMatch 301 ^/wp-content/uploads/(.*)$ http://w1.estatic.net/$1
    ...
</VirtualHost>

I amb aixo ja tenim solucionat el problema de les urls diferents amb la mateixa imatge. Ara nomes queda configurar en WordPress el nou domini per als estàtics i canviar totes les imatges que tinguem en els posts i pagines de manera manual. Aixo serà senzill si no teniu moltes però en cas contrari pot ser tota una feina de xinesos.

Estic treballant en un plugin per fer-lo de manera automàtica però si coneixeu d’algun plugin per fer aixo, aviseu, ja que jo no he trobat cap.

Deixa un comentari

L'adreça electrònica no es publicarà Els camps necessaris estan marcats amb *