Vous avez décidé de mettre votre Blog dans un sous-dossier, il faut donc rediriger les anciennes URLs. Seul problème, les images, elles, n’ont pas bougé car vous avez décidé de les garder dans un dossier séparé (pour versionaliser votre blog, par exemple).
RewriteCond %{REQUEST_URI} !^/images/(.+)$
RewriteRule ^(.*)$ /blog/$1 [R=301, L]
La variable serveur REQUEST_URI est l’URL de la requête privée de l’hôte.
Cette condition vous permet de rediriger toutes les URLs, a l’exception de celles de vos images.
Appliquer une redirection en fonction de l’origine de la requête
Quelqu’un s’amuse à vous piquer vos articles complets ? Ou bien se permet de linker vos images directement ? La solution (si le dialogue échoue) serait de lui envoyer des images différentes de ce que le reste du monde voit, en réécrivant les URLs en fonction de l’origine de la requête.
RewriteCond %{HTTP_REFERER} !http://blog-de-mon-concurrent-voleur.fr.*$
RewriteCond %{REQUEST_URI} !^/images/.*$
RewriteRule ^(.*)$ /images/dont-steal-please.jpg [L]
Les deux conditions s’appliquent bien à notre règle, et signifient que toutes les requêtes venant de blog-de-mon-concurrent-voleur.fr à destination d’une image afficheront à la place notre image dont-steal-please.jpg, faite pour l’occasion.
Activer un mode « maintenance » en fonction de la présence d’un fichier
Pour finir, voila un exemple un peu exotique, où l’on applique une redirection en fonction de l’existence d’un fichier.
RewriteCond /var/www/mon-blog/tmp/maintenance -f
RewriteCond %{REQUEST_URI} !^/maintenance/.*$
RewriteRule ^(.*)$ maintenance/index.php [L]
Si le fichier maintenance est present, toutes les requêtes seront redirigées vers maintenance/index.php, à moins qu’elles n’y pointent déjà (pour ne pas rediriger les CSS et les images). De cette façon il est très simple de passer et retirer le mode maintenance.
Pour finir
La puissance des RewriteCond est énorme, et nous ne pouvons que vous conseiller d’aller voir la liste des variables serveurs disponibles sur le site d’apache. De plus leur utilisation n’est pas réellement compliquée, la grosse difficulté vient surtout de l’utilisation des Regexp.