Rewrite, probleme du caractere '/'
11 messages • Page 1 sur 1
Consultez la formation URL Rewriting et sites dynamiques de WebRankInfo / Ranking Metrics
Rewrite, probleme du caractere '/'
Bonjour,
voila je voulais obtenir au depart des url comme ceci :
http://www.mondomaine.com/categorie1/categorie2 (sans .html a la fin)
pour representer :
http://www.mondomaine.com/index.php?p=c ... categorie2
et en lisant sur ces forums j'ai lu qu'il etait impossible de ne pas mettre l'extension.
Enfin bref en faisant une regle comme ceci :
RewriteRule ^(.*?)-(.*?)\.html$ index.php?p=$1&option=$2 [L]
RewriteRule ^(.*?)\.html$ index.php?p=$1 [L]
Et que j'uilise l'url : http://www.mondomaine.com/categorie1-categorie2.html => Impeccable
Or si je change mes regles ( changement de '-' par '/' ) :
RewriteRule ^(.*?)/(.*?)\.html$ index.php?p=$1&option=$2 [L]
RewriteRule ^(.*?)\.html$ index.php?p=$1 [L]
Alors dans ce cas, les chemins des images ne sont plus bons, ainsi que le css etc..
Que se passe t-il?
Merci de vos reponses..
voila je voulais obtenir au depart des url comme ceci :
http://www.mondomaine.com/categorie1/categorie2 (sans .html a la fin)
pour representer :
http://www.mondomaine.com/index.php?p=c ... categorie2
et en lisant sur ces forums j'ai lu qu'il etait impossible de ne pas mettre l'extension.
Enfin bref en faisant une regle comme ceci :
RewriteRule ^(.*?)-(.*?)\.html$ index.php?p=$1&option=$2 [L]
RewriteRule ^(.*?)\.html$ index.php?p=$1 [L]
Et que j'uilise l'url : http://www.mondomaine.com/categorie1-categorie2.html => Impeccable
Or si je change mes regles ( changement de '-' par '/' ) :
RewriteRule ^(.*?)/(.*?)\.html$ index.php?p=$1&option=$2 [L]
RewriteRule ^(.*?)\.html$ index.php?p=$1 [L]
Alors dans ce cas, les chemins des images ne sont plus bons, ainsi que le css etc..
Que se passe t-il?
Merci de vos reponses..
Tu veux dire que la page est correctement affichée mais que les appels aux autres éléments ne fonctionnent pas? Ils ne seraient pas en liens relatifs par hasard? Genre <img src='image.jpg' /> ? Si c'est le cas, change les chemins image, css, etc pour de l'absolu, par exemple <img src='/image.jpg' />
Par ailleurs, il est tout à fait possible d'utiliser des urls sans extension. Dans ton cas, il suffirait de retirer le \.html dans les règles. Il faudrait cependant ajouter des conditions pour éviter de réécrire tous les appels, entre autres ceux des images et des feuilles de style.
Par ailleurs, il est tout à fait possible d'utiliser des urls sans extension. Dans ton cas, il suffirait de retirer le \.html dans les règles. Il faudrait cependant ajouter des conditions pour éviter de réécrire tous les appels, entre autres ceux des images et des feuilles de style.
Tu peux m'en dire plus au sujet de :
"Il faudrait cependant ajouter des conditions pour éviter de réécrire tous les appels, entre autres ceux des images et des feuilles de style"
Car des que je retire le '\.html' de mon htaccess, et que par exemple j'essaie l'url :
http://www.mondomaine.com/categorie1
Il me la change dans ma barre d'adresse par :
http://www.mondomaine.com/categorie1/?p=categorie1
"Il faudrait cependant ajouter des conditions pour éviter de réécrire tous les appels, entre autres ceux des images et des feuilles de style"
Car des que je retire le '\.html' de mon htaccess, et que par exemple j'essaie l'url :
http://www.mondomaine.com/categorie1
Il me la change dans ma barre d'adresse par :
http://www.mondomaine.com/categorie1/?p=categorie1
A priori, tu es victime du mode de fonctionnement des .htaccess. Voir http://www.webrankinfo.com/forums/viewtopic_15487.htm pour un peu plus de détails.
Pour éviter la réécriture des fichiers css, images et du index.php quand il a été traité, il faut une règle supplémentaire pour empêcher le rewriting, par exemple
Ici, la première règle stoppe tout quand il existe un . dans l'url.
Pour éviter la réécriture des fichiers css, images et du index.php quand il a été traité, il faut une règle supplémentaire pour empêcher le rewriting, par exemple
- Code: Tout sélectionner
RewriteRule \. - [L]
RewriteRule ^([^/]*?)/(.*?)$ index.php?p=$1&option=$2 [L]
RewriteRule ^([^/]*?)$ index.php?p=$1 [L]
Ici, la première règle stoppe tout quand il existe un . dans l'url.
Alors la merci, mettre 'RewriteRule \. - [L]' corrige pas mal mes problemes.
ce qui donne dans mon htaccess :
RewriteRule \. - [L]
RewriteRule ^([^/]*?)/(.*?)$ index.php?p=$1&option=$2 [L]
RewriteRule ^([^/]*?)$ index.php?p=$1 [L]
J'ai juste encore un petit truc.
L'url de mon site est http://www.nuxy.net
Tester les 3 differents liens a gauche:
Nuxy
Edito
Forums
Quand on click sur 'Nuxy' (http://www.nuxy.net/root) ca le fait bien, alors que les autres, il rajoute encore /?p=categorie
Mon fichier index.php traite les urls de la forme :
if (!$_GET['p'])
{ include "edito/index.php"; }
else if ($_GET['p'] == "root")
{ include "root.php"; }
else {
if (file_exists( $_GET['p']."/index.php" )) include ($_GET['p']."/index.php");
else include "lib/error.php";
}
ce qui donne dans mon htaccess :
RewriteRule \. - [L]
RewriteRule ^([^/]*?)/(.*?)$ index.php?p=$1&option=$2 [L]
RewriteRule ^([^/]*?)$ index.php?p=$1 [L]
J'ai juste encore un petit truc.
L'url de mon site est http://www.nuxy.net
Tester les 3 differents liens a gauche:
Nuxy
Edito
Forums
Quand on click sur 'Nuxy' (http://www.nuxy.net/root) ca le fait bien, alors que les autres, il rajoute encore /?p=categorie
Mon fichier index.php traite les urls de la forme :
if (!$_GET['p'])
{ include "edito/index.php"; }
else if ($_GET['p'] == "root")
{ include "root.php"; }
else {
if (file_exists( $_GET['p']."/index.php" )) include ($_GET['p']."/index.php");
else include "lib/error.php";
}
Il semblerait qu'il y ait une interaction malheureuse avec la directive DirectoryIndex du fait de l'existence des répertoires edito et forum.
Trois solutions simples : soit changer les noms de répertoire, soit remonter les index.php et les transformer en edito.php et forum.php, soit placer les includes dans une arborescence indépendante.
Trois solutions simples : soit changer les noms de répertoire, soit remonter les index.php et les transformer en edito.php et forum.php, soit placer les includes dans une arborescence indépendante.
Ah ok, bon je pense que je vais prendre la solution de remonter les index.php et les renommer en edito.php, forum.php car changer le nom des repertoires je viens d'essayer et soit j'ai mal compris ce que tu as dit, soit ca marche pas.
J'ai renommé 2 repertoires :
forum en 'pforum'
edito en 'pedito'
et changer dans mon /index.php :
if (file_exists( $_GET['p']."/index.php" )) include ($_GET['p']."/index.php"); en
if (file_exists( "p".$_GET['p']."/index.php" )) include ("p".$_GET['p']."/index.php");
Ca fait toujours pareil..
J'ai renommé 2 repertoires :
forum en 'pforum'
edito en 'pedito'
et changer dans mon /index.php :
if (file_exists( $_GET['p']."/index.php" )) include ($_GET['p']."/index.php"); en
if (file_exists( "p".$_GET['p']."/index.php" )) include ("p".$_GET['p']."/index.php");
Ca fait toujours pareil..
11 messages • Page 1 sur 1
Formation recommandée sur ce thème :
Formation URL Rewriting et sites dynamiques : apprenez comment mettre en place la réécriture d'URL, comment optimiser vos URL et profiter de vos pages dynamiques pour booster votre référencement. Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



le forum