De belles URLs avec Free sans trop de problèmes
On sait qu’avec l’hébergeur gratuit Free, il est impossible d’utiliser le mod_rewrite d’Apache et difficile de réécrire les URLs de son site/blog. Donc pas de Rewrite Rule dans le .htaccess
. J’avais testé la redirection de la page d’erreur 404, mais cela s’avère ingérable au niveau du panel d’admin ainsi que les flux RSS sans parler des headers HTTP. J’ai dû me résoudre à des permaliens du type : /index.php/%year%/%month%/%postname%/
. Toutefois, il est possible d’éviter le index.php
dans l’URL et le remplacer par autre chose de plus compréhensible pour le client comme blog
ou article
et ce, grâce au Multiviews, un mod qui autorise l’absence d’extension après le fichier dans l’URL.
On veut une URL du type : http://exemple.free.fr/blog/nom-de-larticle/
Création du fichier principal
Vous créez premièrement un fichier blog.php
que vous uploadez sur votre serveur via votre FTP favori.
Vous y insérez le code suivant:
1 | <?php include('index.php'); ?> |
Cela « inclut » le fichier index.php
dans blog.php
. Les lignes de commande situées dans index.php
seront exécutées à l’appel de la page blog.php
.
Empêcher la réécriture du .htaccess
Avant tout, il faut empêcher WordPress de réécrire le fichier .htaccess
avec des règles de réécriture. Cela pourrait créer un conflit avec Free. Ouvrez le fichier misc.php
dans /wp-admin/includes/
et au niveau de la 67ème ligne vous trouverez la fonction suivante :
1 2 | function insert_with_markers( $filename, $marker, $insertion ) { ... |
C’est cette fonction qui réécrit les fichier .htaccess
automatiquement. Pour l’empêcher d’agir, on ajoute return true;
juste après l’accolade :
1 2 | function insert_with_markers( $filename, $marker, $insertion ) { return true; |
Réécrire les permaliens
Dans votre panneau d’administration, allez à Réglages > Permaliens
et entrez les marqueurs dans le champ "Structure personnalisée"
. Par exemple :
1 | /blog/%postname%/ |
Modifier l’URL par défaut du flux RSS
Vous aurez un problème avec le flux RSS car il n’est plus accessible avec /feed/
mais avec /blog/feed/
. Il faut changer l’URL par défaut vers le flux. Pour éviter d’utiliser un .htaccess
, il faut ajouter une fonction dans le fichier functions.php
de votre thème. Le code est expliqué sur http://justintadlock.com/ (en anglais).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php add_filter('feed_link','custom_feed_link', 1, 2); function custom_feed_link($output, $feed) { $feed_url = 'http://exemple.free.fr/blog/feed/'; $feed_array = array('rss' => $feed_url, 'rss2' => $feed_url, 'atom' => $feed_url, 'rdf' => $feed_url, 'comments_rss2' => ''); $feed_array[$feed] = $feed_url; $output = $feed_array[$feed]; return $output; } ?> |
Il suffit de remplacer http://exemple.free.fr/blog/feed/
par l’adresse du flux de votre site web.
Et c’est tout. Normalement, votre blog est fonctionnel et possède des URLs plutôt sympa.