Archives mensuelles : juin 2010

Encore un wordpress multiblog

J’ai profiter de l’arrivée de WordPress 3 pour revoir ma stratégie de multi blog …
le but état de modifier au possible les modification de WordPress.
Mon premier pas a été de tenter la version Mu en créant un réseau de wordpress … intéressant mais imposant une format de d’URL. Alors que je voulait mixer du person.domain.tld/blog et du person.domain.tld. Cela est bien sur possible avec un peu d’url rewriting mais par contre il n’y a pas une vrai indépendance entre les blogs et pas de moyens très simple pour se réserver un blog de test …
La solution est un mélange d’URL Rewriting et Liens symboliques. Bien sur ce n’est jouable qu’à condition de pouvoir créer des liens symbolique ce qui n’est pas possible chez tout les hébergeurs, et la méthode varie suivant ceux-ci.
La racine du blog contiendra un fichier wp-config.php un .htaccess et un lien symbolique vers l’installation de wordpress.

Ce qui suit concerne l’installation chez 1and1
1) création du lien symbolique par exécution d’un petit php déposé à la racine de elui-ci Makelien.php

<?php
passthru('ln -s /kunden/homepages/xxx/xxxxxx/htdocs/chemin_pour/wordpress wordpress'); passthru('ls -l');

2) exécuter et supprimer le petit php
3) copier le répertoire wp-content à la racine du blog
4)ecrire .htacces avec ce contenu


Options +FollowSymLinks
RewriteEngine On
RewriteBase /blog

RewriteRule ^$ /blog/wordpress/index.php [L]

RewriteCond %{REQUEST_FILENAME} !/blog/wordpress/.*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ wordpress/$1 

RewriteCond %{REQUEST_FILENAME} /blog/wordpress/.*
#RewriteCond %{REQUEST_FILENAME} !/blog/wordpress/wp.*
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . /blog/wordpress/index.php [L]

Si le site n’est pas dans un sous répertoire blog supprimer la ligne RewriteBase et le /blog de chaque RewriteRule
5) poser à la base du blog un wp-config.php

<?php
// ** Réglages MySQL ** //
define('DB_NAME', 'xxxxxxxxxxxxxxxx');		// Le nom de la base de données
define('DB_USER', 'xxxxxxxxxxxxxxx');     		// Votre identifiant MySQL
define('DB_PASSWORD', 'xxxxxxxxxx'); 	// ...et votre mot de passe
define('DB_HOST', 'xxxxxxxxxxxx');    			// Dans la plupart des cas, vous n'aurez pas à modifier cette ligne
define('DB_CHARSET', 'utf8'); define('DB_COLLATE', ''); 
// Modifiez chaque KEY en y mettant une phrase unique.  Vous n'avez pas besoin de la mémoriser.
// Elle doit être longue et compliquée.  Vous pouvez aller sur le site http://api.wordpress.org/secret-key/1.1/ 
// afin de générer des phrases uniques pour votre installation. Chaques phrases doit être différentes.
define('AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique. 
define('SECURE_AUTH_KEY', 'xxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique.  
define('LOGGED_IN_KEY', 'xxxxxxxxxxxxxxxxxxxxxx'); // Modifier par une phrase unique.
define('NONCE_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); 
 
// Vous pouvez faire plusieurs installations sur une même base de données, en leur donnant chacune un préfixe unique.
$table_prefix  = 'blog_xxxxxxxxx_';		// Que des chiffres, lettres ou caractères soulignés, s'il vous plait !
 
// Modifiez la ligne suivante pour traduire l'administration de WordPress. Il faut que le dossier
// wp-content/languages contienne un fichier .mo correspondant à la langue choisie.
// Par exemple,  installez de.mo dans wp-content/languages et précisez 'de' pour la variable WPLANG,
// si vous souhaitez mettre en place la traduction allemande.
define ('WPLANG', 'fr_FR'); define('WP_CONTENT_DIR',dirname(__FILE__).'/wp-content'); define('WP_CONTENT_URL','http://adresse_du_blog/wp-content'); define('WP_POST_REVISIONS', false); //pour éviter de surcharger la base de données
 
require_once(ABSPATH . 'wp-settings.php');

6) dans l’installation de wordpress (celle ou pointe les liens symboliques) créer un wp-config.php qui chargera le bon config-php suivant le nom du site d’appel.

<?php
define('ABSPATH', dirname(__FILE__) . '/'); switch ($_SERVER['HTTP_HOST'])
  {
    case 'person1.domain.tld' :
	    include_once('/kunden/homepages/xx/xxxxxx/htdocs/person1/blog/wp-config.php'); 	    break;     case 'person2.domain.tld' :
	 include_once('/kunden/homepages/xxxx/xxxxx/htdocs/person2/wp-config.php');          break;     default :
	    exit('Accès illégal');   }

plus rien n’empêchera les mises à jour automatiques des sites