Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)
Vous n'êtes pas identifié.
Bonjour,
Je sèche sur un soucis d'url rewriting ...
Précision: hébergement 1&1 pack perso initiale.
Pour commencer, j'utilise une fonction pour ré écrire les url qui se nome OptimiseUrl(). Tous caractères accentués est remplacé par son équivalent é->e, ç->c etc ... Les espaces sont remplacés par des tirets (-).
Forme du lien non rewrité:
<a href="page-site.php?titre='.OptimiseUrl($titre_page).'&page='.$id_de_la_page.'">'.$titre_page.'</a>
Forme du lien pour être rewrité:
<a title="'.$titre_page.'" href="'.OptimiseUrl($titre_page).'-'.$id_de_la_page.'.php">'.$titre_page.'</a>
Ce dernier me donne donc une url du style .../creer-un-site-gratuit-12.php
J'utilise la règle de rewriting suivante:
RewriteRule ^(.*)-([0-9]*)\.php$ /page-site.php?titre=$1&page=$2 [L] ou RewriteRule ^(.*)-([0-9]*)\.php$ /page-site.php?page=$2 [L] (exactement le même effet)
Celle ci semble fonctionner sauf que j'ai accès à ma page à partir de plusieurs url ...
Si je reprend cette exemple .../creer-un-site-gratuit-12.php, j'y ai quand même accès en supprimant successivement chaque lettre une par une jusqu'à .../-12.php
!
Pourquoi ?
Pour mes catégories:
J'utilise un fonction nommé sansaccent() qui me remplace les caractères bizarres du aux accents et autres par leurs équivalents.
Forme du lien non rewrité:
<a title="'.sansaccent($nom_de_la_categorie).'" href="categorie.php?monid='.$id_de_la_categorie.'">Suite...</a>
Forme du lien pour être rewrité:
<a title="'.sansaccent($nom_de_la_categorie).'" href="'.OptimiseUrl($nom_de_la_categorie).'-'.$id_de_la_categorie.'.php">suite...</a>
La, je ne parviens pas à trouver la bonne règle d'écriture.
Note:Normalement uniquement les id sont transmises par url.
C'est grave docteur
?
Merci
Hors ligne
Bonjour,
La règle de réécriture est tous à fait bonne.
Ce que tu peu faire c'est une redirection dans tes pages vers la bonne url pour les url n'ayant pas le bon titre.
Par exemple:
if(OptimiseUrl($titre_page)!=$_GET['titre']) header('location:'.OptimiseUrl($titre_page).'-'.$id_de_la_page.'.php')Hors ligne
Merci Crocxx
.
Si j'ai bien comprit ton code, il vérifie que le titre optimisé correspond au titre transmit et si ce n'est pas le cas, il redirige.
Il manque pas des {..} dans ton code ?
J'ai fait comme suit pour obtenir un résultat:
$pageid=$_GET["page"]; //id de la page
$titredelapage=$_GET["titre"]; //titre de la page
$contenue = html_entity_decode($page['contenue_de_la_page']);
$titre = html_entity_decode($page['titre_de_la_page']);
$description = html_entity_decode($page['description_de_la_page']);
$motclef = html_entity_decode($page['motcle_de_la_page']);
if(OptimiseUrl($titre) != $_GET['titre']){
header('location:'.OptimiseUrl($titre).'-'.$pageid.'.php');
}Ci je supprime une ou toutes les lettres que comporte mon titre dans mon url, je suis bien redirigé vers la bonne url. Par contre si je supprime l'id dans l'url, je tombe sur une page blanche sans aucune erreur dessus ?
Tu ne m'as pas répondu pour le rewrite de mes catégories ...![]()
Hors ligne
Il manque pas des {..} dans ton code ?
Pour les { } c'est normal c'est pour un souci d'optimisation quand il y a qu'un seul instruction derrière une condition les {} sont facultatif.
Par contre si je supprime l'id dans l'url, je tombe sur une page blanche sans aucune erreur dessus ?
Alors la aucune idée logiquement tu devrai avoir une erreur 404.
Tu devrait peu étre tester l'entete de la page sans id (personnellement j'utilise: cet outil)
La, je ne parviens pas à trouver la bonne règle d'écriture.
Pour tes catégories les deux règles peuvent rentré en conflit, tu devrai donc utiliser un truc comme ça par exemple:
RewriteRule ^categ-(.*)-([0-9]*)\.php$ /categorie.php?monid=$2 [L]
<a title="'.sansaccent($nom_de_la_categorie).'" href="categ-'.OptimiseUrl($nom_de_la_categorie).'-'.$id_de_la_categorie.'.php">suite...</a>
Hors ligne
Je reviens avec un soucis de rewriting lié à ovh.
Le code ci dessous fonctionne parfaitement sous 1&1 mais sous ovh seul le Rewrite des catégories ne veut pas fonctionner:
RewriteEngine on #Rewrite des pages RewriteRule ^(.*)-([0-9]*)\.php$ /cms/page-site.php?titre=$1&page=$2 [L] #Rewrite des categories RewriteRule ^categorie-([0-9]*)-(.*)\.php$ /cms/categorie.php?monid=$1&categorie=$2 [L] #On rewrite le flux rss RewriteRule ^rss\.xml$ /cms/rss.php [L] #On rewrite le plan sitemap xml RewriteRule ^sitemap\.xml$ /cms/sitemap.php [L]
J'ai essayé en ajoutant un / au niveau de ^/categorie... puis sans les ^et $ .. rien ni fait !
Le résultat est le même, page blanche sans erreurs.
Une idée?
Merci
Hors ligne
Tu peu essayer:
Options -MultiViews RewriteEngine on RewriteBase / #Rewrite des pages RewriteRule ^(.*)-([0-9]*)\.php$ /cms/page-site.php?titre=$1&page=$2 [L] #Rewrite des categories RewriteRule ^categorie-([0-9]*)-(.*)\.php$ /cms/categorie.php?monid=$1&categorie=$2 [L] #On rewrite le flux rss RewriteRule ^rss\.xml$ /cms/rss.php [L] #On rewrite le plan sitemap xml RewriteRule ^sitemap\.xml$ /cms/sitemap.php [L]
Sans garanti de fonctionnement ^^
Hors ligne
Hors ligne
Ou se trouve le htaccess ?
Essais ceci :
RewriteEngine on #Rewrite des pages RewriteRule ^/(.*)-([0-9]*)\.php$ /cms/page-site.php?titre=$1&page=$2 [L] #Rewrite des categories RewriteRule ^/categorie-([0-9]*)-(.*)\.php$ /cms/categorie.php?monid=$1&categorie=$2 [L] #On rewrite le flux rss RewriteRule ^/rss\.xml$ /cms/rss.php [L] #On rewrite le plan sitemap xml RewriteRule ^/sitemap\.xml$ /cms/sitemap.php [L]
Dernière modification par Neo6 (24-04-2008 18:17:19)
Hors ligne
Il me semble avoir vu quelque part qu'il fallait qu'il soit placé à la racine de l'hébergement
Sinon l'erreur d'url rewriting est classique chez le mutualisé d'ovh, il faut ajouter le slash au début juste après ^.
Hors ligne
Essais ça sinon si le code de neo ne fonctionne pas:
RewriteEngine on #Rewrite des pages RewriteRule ^/cms/(.*)-([0-9]*)\.php$ /cms/page-site.php?titre=$1&page=$2 [L] #Rewrite des categories RewriteRule ^/cms/categorie-([0-9]*)-(.*)\.php$ /cms/categorie.php?monid=$1&categorie=$2 [L] #On rewrite le flux rss RewriteRule ^/cms/rss\.xml$ /cms/rss.php [L] #On rewrite le plan sitemap xml RewriteRule ^/cms/sitemap\.xml$ /cms/sitemap.php [L]
à placer à la racine du site par contre.
Hors ligne
Chez OVH "/" est la racine du serveur et non la racine de ton espace FTP.
Relatif :
RewriteRule ^cms/categorie-([0-9]*)-(.*)\.php$ cms/categorie.php?monid=$1&categorie=$2 [L]
Absolu :
RewriteRule ^cms/categorie-([0-9]*)-(.*)\.php$ /home/LOGIN_FTP/www/cms/categorie.php?monid=$1&categorie=$2 [L]
Lignes testées et fonctionnelles.
Ce qui m'étonne c'est que les autres fonctionnent ?
Dernière modification par ComandoCool (24-04-2008 19:08:19)
Hors ligne
Merci de vos tentatives mais toujours pas
... En reprenant ton code Neo6 soit à la racine du site soit dans mon dossier, j'ai du 404 partout. En supprimant les slash juste après (^) j'en revient au même (que le htaccess soit à la racine ou dans le dossier) .
C'est déprimant
^^.
Hors ligne
Alors:
Crocxx: 404 partout
ComandoCool: sa marche mais ..... sa marche pas ^^. En faite sa tourne comme mon htaccess du départ..c'est à dire que tout fonctionne sauf le rewrite des catégories.
Les 2 testés à la racine du site.
Dernier code testé
RewriteEngine on #Rewrite des pages RewriteRule ^cms/(.*)-([0-9]*)\.php$ cms/page-site.php?titre=$1&page=$2 [L] #Rewrite des categories RewriteRule ^cms/categorie-([0-9]*)-(.*)\.php$ cms/categorie.php?monid=$1&categorie=$2 [L] #On rewrite le flux rss RewriteRule ^cms/rss\.xml$ cms/rss.php [L] #On rewrite le plan sitemap xml RewriteRule ^cms/sitemap\.xml$ cms/sitemap.php [L]
Catégorie non rewrité: http://reflink.fr/cms/categorie.php?mon … categorie1
Catégorie rewrité: http://reflink.fr/cms/categorie-12-categorie-1.php
Hors ligne