Aide url rewritting + affichage page par page

Répondre
sparh
le 24/07/2007 à 20:58
sparh
Bonjour,

j'éssai de rewritter mon site.
Jusqu'ici pas de problèmes mais je bloque sur les pages qui contiennent un affichage page par page (que j'ai réussis à faire grace aux ancien tuto qu'il y avait sur le site ;)

Donc mon problème ce n'est pas au niveau du htaccess (enfin pas pour l'instant ;) , mais au niveau de l'écriture des urls dans les page php.

Voici mon htaccess
#pour la page les catégories
RewriteRule ^([0-9,a-z,A-Z,_-]+).html$ index.php?cat=$1 [L]

Qui permet de transformer monsite.com/index.php?cat=une-variable
par monsite.com/une-variable.html

Et voici le code qui gère le page par page (et qui affiche la barre de navigation quand il y a lieu! et qui pause problème!!)
if ($_SERVER['QUERY_STRING'] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
$nb_element = count ($tableau);
if ($nb_element == 1) {
$query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
}
else {
if ($tableau[0] == "") {
$query = $_SERVER['PHP_SELF'].'?debut=';
}
else {
$query = $_SERVER['PHP_SELF'].'?'.$tableau[0].'debut=';
}
}
}

Du coup les liens générés par la barre sont du type monsite.com/index.php?cat=une-variable&debut=xx

J'ai remplacé $_SERVER['PHP_SELF'] par _SERVER['REQUEST_URI']
Mes liens sont alors du type monsite.com/index.html?cat=une-variable&debut=xx (ca rajoute bien le html au lieu du php et le lien marche)

Ma question:
comment récupérer les variables mais seulement les variables, en effet
$_SERVER['QUERY_STRING'] permet de récupérer cat=une-variable&debut=xx

Moi je veux juste récupérer une-variable et xx (pour pouvoir les afficher comme je veux!

J'éspère avoir été clair,
merci d'avance
LA GLOBULE
le 24/07/2007 à 21:14
LA GLOBULE
Le problème, c'est que ton rewrite est trop large, donc tu as beaucoup plus de traitement à faire côté PHP.

Ca serait plus simple en ajoutant une seconde règle de rewrite pour y inclure la notion de page.

Typiquement sur lephpfacile :

# Lecture d'un message : page par page
RewriteRule ^forum/([0-9]+)-(.*)/([0-9]+)-(.*)/page-([0-9]+).php$ /forum/read.php?id_forum=$1&label_forum=$2&id_sujet=$3&label_sujet=$4&p=$5 [QSA,L]
# lecture d'un message : premiere page
RewriteRule ^forum/([0-9]+)-(.*)/([0-9]+)-(.*)/?$ /forum/read.php?id_forum=$1&label_forum=$2&id_sujet=$3&label_sujet=$4 [QSA,L]


Et comme çà, j'accède directement à $_GET['id_sujet'] et $_GET['p'] (qui peut ne pas exister).

Ensuite, tu dois modifier ta fonction de page par page pour générer des liens de la forme monsite.com/une-variable.html (en y intégrant la notion de page) et non de la forme monsite.com/index.php?cat=une-variable.
sparh
le 24/07/2007 à 21:37
sparh
Ca faisais longtemps que je n'étais pas venu sur le site et je vois que le forum est toujours efficace ;=)

Merci pour ta réponse rapide, je vai travailler ça
sparh
le 26/07/2007 à 20:04
sparh
Salut,
bon j'ai bien avancé puisque tout marche ;)
Il reste un petit détail, quand on revient sur la page 0, l'url est du type:
monsite.com/Article,0
ce qui donne un duplicate content avec la page:
monsite.com/Article
Je voudrai donc que la barre de navigation affiche une url sans la variable debut=0 quand on revient à la page 0!

Je met dans le wall le code modifié avec des explications plus précises.

Merci d'avance

Barre de navigation rewritté
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours