Archives par mot-clé : Url Rewriting

Ajouter un alias à Apache

Publié dans Apache | Laisser un commentaire

De base, pour ouvrir une page à l’aide d’Apache, il faut que celle-ci se trouve dans le dossier /var/www sous Linux, ou dans le dossier www/ d’Apache sous Windows. On y accède alors en allant à l’adresse : http://localhost/nomDeLaPage.html.
Cela n’est pas forcément des plus pratique, par exemple moi j’ai une partition sur laquelle est installée Windows, une autre avec Linux, et une troisième qui contient mes documents (avec un petit soft installé sur Windows pour pouvoir gérer le système de fichiers ext3). Par conséquent, Apache est installé sur ma partition Linux, et mes fichiers se trouvent dans ma partition documents et non dans /var/www de la partition Linux. Heureusement, il existe des solutions pour mettre fin à ce petit embêtement : il suffit de créer un alias. Pour cela, il faut rajouter une ligne dans le fichier de configuration d’apache. Sous Linux : /etc/apache2/apache2.conf (ou httpd.conf si vous utilisez apache1), ou sous Windows : $VOTRE_DOSSIER_APACHE/conf/httpd.conf (en général, des interfaces graphiques vous permettent d’ajouter facilement des Alias). Ajoutez à la fin :

# Mes alias
Alias /nomDuDossierAlias /cheminVersLeVraiDossier

Reste à redémarrer Apache, en ligne de commande par exemple :

bash$ /etc/init.d/apache2 restart

Et le tour est joué, la page http://localhost/nomDuDossierAlias est désormais accessible et utilisera les fichiers de /cheminVersLeVraiDossier. On peut préciser les permissions qui s’appliquent à ce dossier (comme pour locahost, ou un virtualhost) en ajoutant après l’alias :

<Directory /cheminVersLeVraiDossier>
   Order allow,deny 
  Allow from all
</Directory>

Pour finir, dans le cas où on souhaite utiliser de l’url-rewriting, il faudra peut-être ajouter un RewriteBase au fichier .htaccess :

RewriteBase /cheminVersLeVraiDossier

Et voilà !

Un ami m’a aussi expliqué comment enlever le localhost et utiliser directement http://cequejeveux.com en ajoutant « 127.0.0.1 cequejeveux.com » dans le fichier hosts. ça devient gadget mais ça peut être utile. J’ai un article plus détaillé en cours de rédaction à ce sujet 🙂

Pour aller plus loin

Réécriture d’url pour Dotclear

Publié dans Dotclear | Laisser un commentaire

Voilà déjà quelques temps que j’ai réussi à réécrire l’url des pages de mon blog Dotclear. Auparavant une page billet avait un url ressemblant à index.php?post/2009/07/16/titre-du-billet.html, et maintenant, elles sont de la forme : /post/2009/titre-du-billet.html. C’est quand même mieux ! On pourrait optimiser encore, mais moi ça me suffit.

Il y a deux choses à faire pour modifier la réécriture des urls sur son blog.

Format d’url des nouveaux billets

Dans les paramètres du blog (Tableau de bord > Paramètres du blog), il est possible de modifier le format d’url des nouveaux billets. Par exemple : Année/Mois/Jour/Titre ou Année/Titre.
Mais il est aussi possible de modifier ça « à la main » (donc avec plus de possibilité) dans about:config (Extensions > about:config).

Format d'urls
Continuer la lecture

Activer l’url rewriting d’Apache sous EasyPhp

Publié dans Apache | Laisser un commentaire

Aujourd’hui, j’ai cherché à activer l’url rewriting d’Apache sur l’EasyPhp que j’utilise pour tester mes sites en local. C’est assez simple, tout se passe dans le httpd.conf. (Clic droit sur le logo EasyPhp Configuration > Apache) Il suffit de dé-commenter (c’est-à-dire enlever les dièses qui sont devant) les 2 lignes suivantes :

LoadModule rewrite_module modules/mod_rewrite.so
AddModule mod_rewrite.c

J’ai la version EasyPhp 2.0, et la ligne AddModule... n’existe pas, mais ça ne pose pas de problèmes. Puis, il faut vérifier que AllowOverride est bien à All. AllowOverride apparait plusieurs fois, d’abord dans , puis dans ou autre, et dans les Alias tout en bas du fichier. Si vous n’utilisez que le dossier www/, ne vous occupez pas des Alias. Mais si vous avez créé des alias, modifiez les AllowOverride pour eux aussi. Enregistrez, redémarrez Apache (ou tout EasyPhp) et, en théorie, l’url rewriting est activé ! Amusez-vous bien !
Je me rend compte que cette manipulation ne dépend pas du tout d’EasyPhp (et c’est plutologic), donc en fait, je viens d’apprendre à activer l’urlrewriting d’Apache tout court. C’est beau.

Les jours où l’on déteste IE

Publié dans Geekeries | Laisser un commentaire

Le jour où l’on déteste IE c’est par exemple le jour où l’on découvre que pour utiliser des répertoires virtuels avec de l’url-rewriting (ex. : pages/page-magique.html redirige vers index.php?id=15 alors que le dossier pages/ n’existe pas), il ne faut pas mettre de slashs à la fin de l’url de base dans @@ ///

2 méthodes pour personnaliser des extensions Web

Publié dans Apache | Laisser un commentaire

J’ai lu un billet l’autre jour sur Code 18 à propos de la personnalisation des extensions Web, et je trouvais que ça allait bien avec ce dont j’ai déjà parlé à propos de l’Url Rewriting. Par exemple, si jamais j’avais envie de créer des fichiers .bn pour faire genre j’ai créé un langage s’appelant « BN » (héhé) mais sans créer ce langage (parce que hein), en utilisant le langage PHP par exemple. Eh bien il me suffit de dire à Apache (ou équivalent) d’interpréter les pages .bn comme des pages .php. Pour cela, je n’ai qu’à ajouter une ligne au .htaccess ou au fichier httpd.conf d’Apache :

AddType application/x-httpd-php .bn

Et je suppose qu’on peut faire de même avec httpd-html… A tester. Bon, vous me direz, on peut obtenir le même effet en créant normalement des pages .php et en utilisant l’Url Rewriting pour créer des pages virtuelles .bn qui redirigent vers les pages .php

RewriteRule ^([a-z,A-Z,0-9,\-]+).bn$ $1.php [L]

Et voilà le travail ! C’est cette dernière méthode que j’avais utilisé sur la Bnbox pour créer des pages .cahier, .atelier, … Je trouvais ça fun à l’époque, mais aujourd’hui je regrette un peu 😀

L’url rewriting c’est le bien

Publié dans Apache | Laisser un commentaire

L’url rewriting, cette technique qui consiste à créer des pages virtuelles avec un url tout mignon et qui redirige vers de vraies pages avec un url tout moche, est particulièrement intéressante pour 2 raisons :

  • Se faire bien voir des moteurs de recherches. L’url est très utilisé par les robots d’indexation, par conséquent, si elle contient déjà des mots clefs importants, c’est tout bon !
  • Améliorer l’expérience de ses visiteurs. En effet, on est plus enclin à cliquer sur un lien http://exemple.fr/presentation-url-rewriting.html que sur http://exemple.fr/index.php?id=1254879, tout simplement parce que l’on sait, a priori, de quoi est censé parler la page sur lequel on va se diriger.

Pour réécrire ses urls, il suffit de créer un fichier .htaccess à la racine de son serveur et d’y écrire quelques lignes pour expliquer à Apache comment rediriger certaines pages. Quelques connaissances en expressions régulières peuvent servir ! Et il faut que le mode url-rewriting de votre serveur Apache soit activé. (ce qui n’est pas le cas partout, mais il y a des techniques pour réécrire quand même ses urls, notamment sur un serveur hébergé par Free) Et ce fichier .htaccess peut ressembler à ça :

RewriteEngine on RewriteBase /site/front ################################################################################
#
# REDIRECTION DES PAGES VIRTUELLES RATTACHEES A DES RUBRIQUES : 
#
#	Exemple de redirection: scooter-rouge_15.php => index.php?id=15 
#
#	PS: 1.	Le - (tiret) sert à séparer les mots dans un nom de page
#		Le _ (underscore) sert à distinguer la page de la rubrique.
#		Exemple: scooter-rouge-08_15.php OU scooter-rouge-fiche_15.php
#
#            2.	Sur certain serveur d'hebergement, il faut forcer l'ajout de "/"
#		devant la 2éme partie des régles: /index.php?id=$2 [L]
#
# Solution : tester avec la règle située à la fin de ce fichier
# ################################################################################
# Règles pour l'affichage des pages articles
RewriteRule ^([a-z,A-Z,0-9,\-]+).html$ index.php?RID=10&kw=$1 [L]

Cela étant dit, je pense que la meilleur manière de réécrire des urls est d’utiliser le titre de la page et seulement le titre de la page. Je m’explique en prenant comme exemple une page index.php?id=42 qui a pour titre (titre de la page, ou titre d’un article) « Hello Word! » :

  • La méthode la plus courante est d’utiliser la forme suivante : hello-world_42.html. C’est déjà pas mal, et c’est même plus que bien ! C’est de loin ce qu’il y a de plus simple aussi.
  • La méthode la plus performante mais légèrement plus délicate à mettre en place est d’utiliser la forme qui suit : hello-world.html. Pour la mettre en place, il suffit d’enregistrer le titre rewrité de chacune de ses pages dans sa base de données. Ces titres rewrités remplacent alors les id des pages. Et puis voilà, le tour est joué ! Bien sûr, pour éviter que 2 pages ayant un titre identique pointent vers le même lien, il est nécessaire que la fonction de rewritage du titre se charge de vérifier que ce dernier n’existe pas encore, et si ce n’était pas le cas, de lui ajouter un id ou je ne sais quoi. Bref, l’idée est là ! Et tant qu’à faire, cette fonction de parsage se chargera de supprimer ou de remplacer les caractères accentués, les majuscules, les espaces, les mots de moins de 2 ou 3 lettres (sauf cas particuliers), … Un truc qui ne garde que les mots clefs réellement important quoi.

Bon, sur ce, je retourne rewrité des pages !