WordPress : héberger les images sur un sous-domaine photo 1

WordPress : héberger les images sur un sous-domaine

Cela fait des années que je parle d’héberger les images du site sur un sous-domaine mais j’ai toujours remis cela à plus tard.

Je pensais que la configuration me prendrait un temps infini mais au final cela ne m’aura pris qu’un peu de réflexion et quelques minutes pour tout finaliser.

Le plus long aura été d’écrire ce tutoriel!

Aujourd’hui, c’est chose faite : les images des articles du site sont donc placées sur un sous-domaine pour des raisons de performances.

subdomains

Voici donc un petit tutoriel qui détaille toutes les étapes. Cela prend environ 20 minutes.

Principe de fonctionnement

Les fichiers du site sont présentement servis par Apache. Le domaine est skyminds.net et nous allons créer un sous-domaine, qui est en fait un répertoire au niveau de l’arborescence du site, qui contiendra toutes les images de nos articles.

Par défaut, WordPress place tous les fichiers uploadés via l’interface d’administration dans /wp-content/uploads.

Nous allons donc créer un sous-domaine (static.skyminds.net) qui pointera vers le répertoire /wp-content/uploads.

L’intérêt est que nous n’avons pas à copier ou à déplacer de fichiers. Cela permet aussi de revenir à une installation plus classique à tout moment, sans intervention majeure.

Une fois ce VirtualHost créé, il ne reste plus qu’à modifier les options de WordPress pour les futurs articles et changer les anciennes URI des images dans les anciens articles. P

our finir, nous redirigerons les anciennes URI vers les nouvelles via .htaccess.

Etape 1 : on crée le sous-domaine sur le serveur Apache

Commençons par créer un nouveau VirtualHost pour notre sous-domaine:

nano /etc/apache2/sites-available/static.skyminds.netCode language: JavaScript (javascript)

et ajoutons-y ceci :

ServerAdmin webmaster@localhost
DocumentRoot /home/skyminds/public_html/wp-content/uploads
ServerName static.skyminds.net
ErrorLog /var/log/apache2/www-error.log

        
          AllowOverride None
          RequestHeader unset Cookie
          Header unset Set-Cookie
          Options FollowSymLinks
          Order allow,deny
          Allow from allCode language: JavaScript (javascript)

Plusieurs choses sont importantes à noter dans ce fichier de configuration Apache:

  • DocumentRoot pointe vers le répertoire /home/skyminds/public_html/wp-content/uploads
  • on retire tous les cookies servis par static.skyminds.net

Pas de cookies, pas de soucis et un site qui gagne en rapidité !

Lire la suite

PHP : résoudre l'erreur "Redefining already defined constructor for class ..." photo

OVH : activez PHP-FPM sur votre hébergement

OVH est en pleine implémentation du module PHP-FPM sur ses offres, (et ici dans leur guide), ce qui permettrait selon la team OVH “d’accélérer les temps de réponses de PHP et d’obtenir des performances jusque 7 fois plus rapides dans nos labos par rapport au moteur actuel”.

Activation de PHP-FPM

Pour activer ce mode sur votre offre, il suffit de créer un fichier .ovhconfig à la racine de l’arborescence FTP, dans le dossier parent du répertoire /www.

Si vous souhaitez activez PHP 7, voici ce que doit contenir votre .ovhconfig:

app.engine=php
app.engine.version=7.0
http.firewall=none
environment=production

Si vous souhaitez activez PHP 5.6, voici ce que doit contenir votre .ovhconfig:

app.engine=php
app.engine.version=5.6
http.firewall=none
environment=production

Lire la suite

wordpress-permalinks-postname

WordPress : changer la structure des permaliens

wordpress_icon_blue Il y a quelques semaines, j’ai décidé de changer la structure des permaliens (ou permalinks) sous WordPress.

Je me suis rendu compte que finalement, il y avait très peu d’intérêt à garder la date de création de l’article dans l’URL étant donné qu’elle est présente dans chaque article, cela permet de raccourcir les URLs et mes articles sont plutôt timeless.

Cela se fait en 2 étapes, en 5 minutes top chrono.

Etape 1 : changer la structure des permaliens WordPress

C’est tout simple, il suffit de se rendre dans Settings > Permalinks et de sélectionner Post name:

wordpress permalinks postname

Depuis WordPress 3.3, choisir l’option /%postname%/ ne pose plus de problème de performance. C’était le cas auparavant et l’option n’était pas disponible.

Validez les changements.

Lire la suite

WordPress : optimiser le fichier htaccess pour les permalinks photo

WordPress : optimiser le fichier htaccess pour les permalinks

Toujours à la recherche de ce qui peut optimiser le chargement du site et soulager le serveur, je vous donne ma configuration du fichier htaccess en ce qui concerne les permaliens (permalinks) de WordPress.

Code de base WordPress

Voici le code htaccess standard de WordPress :

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPressCode language: PHP (php)

Lire la suite

Guide pour créer et héberger un site sur Internet photo 3

Guide pour créer et héberger un site sur Internet

Voici un petit guide qui dévoile les étapes de la création et l’hébergement d’un site Internet. Ce guide est plutôt général et ne se veut pas exhaustif, c’est plus une suite d’étapes pour gagner du temps pour monter et mettre rapidement un site en ligne.

you are here

Sachez que la première chose à faire est définir vos besoins : le type de site que vous allez créer, le public visé, le langage de programmation ou la plateforme choisi, les fonctionnalités à mettre en œuvre, le nom du site et le nom de domaine, votre identité graphique (couleurs, logo)…

Tout doit commencer avec un papier et un crayon : couchez par écrit ce que souhaitez en termes de fonctionnalités et de design.

Faîtes un plan. Je vous promets que vous ne le regretterez pas, c’est du temps gagné pour la suite.

Lire la suite

Migration des flux FeedBurner vers les comptes Google photo

Migration des flux FeedBurner vers les comptes Google

Migration de feedburner vers google

Cela fait quasiment deux ans que Google a racheté FeedBurner et pas grand-chose ne s’était passé depuis.

Et bien la machine vient de se mettre en marche : la grande migration des comptes FeedBurner vers les comptes Google a déjà commencé.

Cette migration, qui concerne tous les comptes, se terminera le 28 février donc je vous conseille de prendre les devants et de migrer votre compte vous-même.

La migration prend moins de 2 minutes.

Lire la suite

Quelques astuces pour accélérer le chargement de votre site (et faire des économies de bande passante) photo

Quelques astuces pour accélérer le chargement de votre site (et faire des économies de bande passante)

Plus le temps passe et plus votre site consomme de bande passante ? Et oui, c’est le risque à prendre lorsque l’on devient populaire !

Voici donc quelques astuces pour réduire votre consommation de bande passante et, par le biais de quelques optimisations, accélérer la vitesse de votre site pour le confort de vos visiteurs.

L’optimisation fait partie d’un tout : images, code, feuilles de style, requêtes SQL… tout joue sur la navigation et la réactivité du site.

Lire la suite

Résoudre l’erreur HTTP 406 Not Acceptable

Depuis que mon hébergeur a mis ses serveurs en cluster et exécute PHP en CGI et non comme module Apache, certaines fonctions de WordPress ne se comportent pas correctement, notamment les éditeurs de fichiers.

En effet, ces derniers semblent être devenus incapables de modifier les fichiers sans provoquer une erreur HTTP 406 :

HTTP Error 406 – Not acceptable
An appropriate representation of the requested resource /XYZ.php could not be found on this server.

Après quelques recherches, il semblerait que ce soit les filtres du mod_security d’Apache qui, trop restrictifs, empêchent les éditeurs… d’éditer !

La solution consiste donc à désactiver mod_security dans le répertoire où se trouvent les éditeurs (/wp-admin/ dans le cas de WordPress) :

  1. Créez un fichier .htaccess
  2. Editez le fichier avec ces instructions :
    
    SecFilterEngine Off
    SecFilterScanPOST Off
    
    
  3. Sauvegardez : vos éditeurs devraient maintenant fonctionner sans aucune erreur.

Notez que j’ai pris WordPress comme exemple mais cela résout les problèmes d’erreurs 406 quelle que soit l’application utilisée (blog, CMS…).

Mieux vaut créer le .htaccess dans le répertoire qui en a besoin : il est inutile voire déconseillé de désactiver mod_security sur l’ensemble d’un domaine pour des raisons évidentes de sécurité.

A utiliser là où il y a besoin donc.

Referer Spam : headshots à revendre

Le truc à la mode chez les spammeurs en ce moment c’est le referrer spam, ou la pollution de vos logs Apache par des sites peu recommandables, vous donnant ainsi l’impression que la moitié de vos visiteurs sont des détraqués sexuels cherchant le repos dans des analyses économiques ou dans des exposés de littérature espagnole, comme Don Alvaro ou Dona Inés.

Au début, on se demande comment ces mystérieux visiteurs ont pu trouver notre site. Après 3 ou 4 jours et quelques milliers de hits sur les mêmes pages avec un pic de consommation de bande passante, on commence à voir rouge.

Ma mission (et je l’accepte) : bouter les spammeurs hors du site. J’ai pour cela étudié 2 possibilités : soit on gère tout avec Apache et ses .htaccess, soit on écrit un script PHP qui va bloquer les intrus et les envoyer ailleurs.

J’ai privilégié le .htaccess vu que cela se fait au bas niveau du serveur, ce qui devrait consommer moins de ressources que l’interprétation du script PHP.

Méthode 1 : utilisation du .htaccess

Le principe est simple : nous allons tester la variable HTTP_REFERER de nos visiteurs et vérifier qu’ils ne sont pas blacklistés.

S’ils le sont, on les expédie sur un site bidon (voir la dernière ligne).

Toutes les lignes de la blacklist se finissent par [OR] ou [NC,OR] sauf la dernière qui se termine en [NC]:

RewriteEngine On
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?joyvids.com.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?formymob.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?foryourmob.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?bkinky.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topshelfinks.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?pvblog.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?highprofitclub.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones3.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wickedringtones4.com.*$ [NC,OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)adult(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)anal(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)gay(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)mature(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)nude(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)porn(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)pus*y(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)sex(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)teen(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)tits(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*(-|.)titten(-|.).*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*accepted.cc$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?.*episodesusdbz/.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?advancedmoneyloans.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?affiliplanet.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?apart-?design.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?auktion.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?autogewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?autospiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?babay.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?euromillionen.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?eurowins.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?geldspiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?goovle.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?gsm-support.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?gzltax.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?heil-fasten.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?immobiliengewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?incest-.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?keywordmaster.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?nackt-stars-nackt.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?one2onemag.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?qw8.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?referrer-script.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?reisegewinne24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?rootfood.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?shemale.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?single66.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?slamhost.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?spielepsychatrie.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?superface.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topgewinn24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?topspiele24.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?transexual.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?usa-wins.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?vendini.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?webmasterplan.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?wseeker.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?xmaster.*$ [OR]
 RewriteCond %{HTTP_REFERER} ^http://(www\.)?spammersite7.com.*$ [NC]
 RewriteRule \.*$ http://spam.abuse.net/ [R,L]
 RewriteEngine OffCode language: JavaScript (javascript)

Méthode 2 : utilisation d’un script PHP

Même principe mais en se servant de PHP, je ne vais pas réinventer la roue : suivez l’exemple de Holy Schmoly!

Voilà, le mois de mars vient de commencer et je n’ai plus aucun pollueur dans mes stats. La liste est bien sûr à moduler selon vos spammeurs et les sites que vous souhaitez bloquer.