8797 sujets

Développement web côté serveur, CMS

Bonjour,

Je suis en train de m'informer sur la réécriture d'URL dans Apache.

Je cherche une solution au problème suivant :

Soit une page "http://www.monsite.com/contact.php?lang=fr". Il s'agit donc d'une page de contact dont le texte sera en français.

Mon souhait, pour des raisons de référencement, est de pouvoir écrire ceci : "http://www.monsite.com/fr/contact.html". Facile avec une simple règle de réécriture, mais la complexité du problème se situe ici :

Si la page demandée était en allemand, on aurait écrit ceci avec la dite règle : "http://www.monsite.com/de/contact.html". L'histoire aurait pu s'arrêter la, mais en allemand, "contact" s'écrit "kontakt", donc j'aimrais que si le paramètre "lang" est "de", mon url devienne "http://www.monsite.com/de/kontakt.html".

Je n'ai aucune expérience dans ce domaine donc certains penseront que je rêve, mais cela ne me semble pas si paranormal que cela Smiley smile .

Y a-t-il un spécialiste dans la salle ?

Merci de votre aide !

Heriquet
Hello Heriquet,

(sujet déplacé)
Heriquet a écrit :
Je n'ai aucune expérience dans ce domaine donc certains penseront que je rêve, mais cela ne me semble pas si paranormal que cela Smiley smile .
A mon avis le problème n'est pas au niveau de la faisabilité mais vient du fait que tu vas être obligé d'écrire une règle de correspondance par page sans pouvoir l'automatiser... Cela peut ne pas être très gênant si tu as peu de pages mais va vite devenir fastidieux si ça n'est pas le cas (et je ne te parle même pas de la maintenance de ton .htaccess à long terme).

A+
Merci de ta réponse.

Il n'y a pas énormément de pages, une vingtaine grand maximum (je compte large).

Plus précisément, comment puis-je mettre une condition ?

Par exemple : pour ma page contact, ca s'appellerait contact.html en francais, mais kontakt.html en allemand...
Effectivement comme dit Heyoan, ce n'est pas vraiment une bonne idée de faire une règle par page, parce que là tu vas peut-être régler le problème du contact, mais quand tu vas devoir faire la même chose pour home.php?, inscripion.php?.. etc ton fichier htaccess va devenir un vrai usine à gaz difficile a maintenir. Je crois un plus qu'un fichier htaccess trop complexe peut ralentir le site. Il vaut mieux avoir une règle générale et prendre en compte ton urlrewriting depuis ta base de donné.

Pour cela tu as plusieurs méthodes:

Si tu as plusieurs table concernée par l'url rewriting, tu peux faire un table spéciale "urls" comme ça : id_name|table_name|url (par exemple) quand le paramètre url est envoyé à ta page il récupère ainsi le nom de la table et le nom de l'index de celle ci, ce qui te permettras de récupérer l'information.

Si tu as un seule table concernée par les urlrewriting tu peux rajouter un champ url dans ta table.

Le but du jeu et de transformer ton url kontakt.html en index.php?url=kontakt. Avec la méthode précédemment décrite cela suffit.

Quand tu as un site multilangues, cela suppose que tu es un champ lang dans ta table, si ce n'est pas le cas alors il faut rajouter un paramètre a ton url c'est a dire que /de/kontakt.html sera transformé en index.php?url=kontakt&lang=de.

Ce sont des exemples, tu peux aussi envoyer l'id de la page et de la section dans url et avoir des url de types kontakt-2-3.html. Ce qui te permet de passer plusieurs paramètre, comme ceux relatifs à l'arborescence, l'url est moins propre mais tu feras moins de requêtes sur ta base, question de choix.

Tout ça pour dire que la règle url est un problème "secondaire", l'important est de bien déterminer comment cela va fonctionner.
Bonjour,

J'ai un peu muri mes idées avec vos posts.

J'ai trouvé ce script que j'ai un peu adapté :

<?php
$requested = empty($_SERVER['REQUEST_URI']) ? false : $_SERVER['REQUEST_URI'];

switch ( $requested ) {

	case 'fr/contact':
		header('Location:  http://www.monsite.com/contact.php?lang=fr');
 
		break;

	case 'de/kontakt':
		header('Location:  http://www.monsite.com/contact.php?lang=de');
 
break;

	default: ;
}

?>


Cela me semble être intéressant.

En analysant le request URI dans ma page index, je peux toujours faire une redirection vers la page concernée... mais est-ce que l'URL affichée alors restera propre ?

L'idée est que www.monsite.com/fr/contact reste affichée comme cela.

Cependant, mon problème étant l'indexation par les moteurs de recherche, j'ai le sentiment que le but serait atteint si on se dit que l'url est lisible dans les pages...

Que pensez-vous de cette solution ?
Modifié par Heriquet (15 Jul 2008 - 09:59)