je ne comprends pas l'url rewriting
12 messages
• Page 1 sur 1
- bibiyanki
- WRInaute discret

- Messages: 203
- Inscription: 4 Jan 2010
je ne comprends pas l'url rewriting
hello:
je suis en train de finir un site associatif et j'arrive à l'étape de la réécriture des urls.
J'ai intégré dans le site un forum qui marche avec l'url rewriting donc j'ai regardé le code htaccess..
le voici
cela à l'air facile mais ça ne fonctionne absolument pas pour mon script de news...
Le fichier htaccess ainsi que le site sont dans un répertoire /projet/ , mon script de news est dans le répertoire /scientifique/
voici un bout de mon script
donc je dois faire
mais cela ne fonctionne pas, pouvez vous m'aider ?
je suis en train de finir un site associatif et j'arrive à l'étape de la réécriture des urls.
J'ai intégré dans le site un forum qui marche avec l'url rewriting donc j'ai regardé le code htaccess..
le voici
- Code: Tout sélectionner
RewriteEngine on
# Lecture d'un sujet
RewriteRule ^post-([0-9]+)-p([0-9]+)(?:-(.*))?\.html$ index.php?page=post&ids=$1&pg=$2 [L]
RewriteRule ^post-([0-9]+)(?:-(.*))?\.html$ index.php?page=post&ids=$1 [L]
RewriteRule ^postsond-([0-9]+)-p([0-9]+)(?:-(.*))?\.html$ index.php?page=post&ids=$1&pg=$2&affsond= [L]
RewriteRule ^postsond-([0-9]+)(?:-(.*))?\.html$ index.php?page=post&ids=$1&affsond= [L]
cela à l'air facile mais ça ne fonctionne absolument pas pour mon script de news...
Le fichier htaccess ainsi que le site sont dans un répertoire /projet/ , mon script de news est dans le répertoire /scientifique/
voici un bout de mon script
- Code: Tout sélectionner
<td bgcolor="<?php echo(($i++ % 2 == 0) ? '#ccc' : '#ececef' ); ?>"><h4 align="center"><a href="./scientifique2.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['titre'];?></a></h4></td>
</tr>
donc je dois faire
- Code: Tout sélectionner
RewriteRule ^post-([0-9]+)(?:-(.*))?\.html$ scientifique2.php?id=$1 [L]
mais cela ne fonctionne pas, pouvez vous m'aider ?
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Re: je ne comprends pas l'url rewriting
bibiyanki a écrit:mais cela ne fonctionne pas, pouvez vous m'aider ?
C'est à dire ? Il faut aussi que tu modifies ton code HTML, hein...
-

UsagiYojimbo - WRInaute accro

- Messages: 8575
- Inscription: 23 Nov 2005
Re: je ne comprends pas l'url rewriting
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: je ne comprends pas l'url rewriting
Salut,
Pour "dégrossir" un peut la chose :
donne un lien du style :
Pour obtenir une url du genre :
Il faut transformer l'url en :
ou mafonction() est une fonction permettant de ré écrire correctement le titre inclue dans l'url.
A cela s'ajoute la ligne de rewrite dans le fichier .htaccess qui pourait être :
Note: dans ce cas précis la page affichant les données se nomme "page.php" et reçoit comme variable "titre" et "id".
En résumé :
1)Utiliser le fichier .htaccess pour le rewriting.
2) Modifier la forme des liens en fonction du rewriting utilisé.
3) Inclure une fonction pour la ré écriture.
Pour "dégrossir" un peut la chose :
- Code: Tout sélectionner
<a href="./scientifique2.php?id=<?php echo $donnees['id']; ?>"><?php echo $donnees['titre'];?></a>
donne un lien du style :
- Code: Tout sélectionner
<a href="./scientifique2.php?id=1">Titre de mon poste</a>
Pour obtenir une url du genre :
- Code: Tout sélectionner
<a href="./titre-de-mon-poste-1.php">Titre de mon poste</a>
Il faut transformer l'url en :
- Code: Tout sélectionner
<a href="./<?php echo mafonction($donnees['titre']);?>-<?php echo $donnees['id'];?>.php">Titre de mon poste</a>
ou mafonction() est une fonction permettant de ré écrire correctement le titre inclue dans l'url.
- Code: Tout sélectionner
function mafonction($chaine)
{
$chaine=strtolower($chaine);
$accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
$sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
$chaine = preg_replace($accents, $sans,$chaine);
$chaine = preg_replace('#[^A-Za-z0-9]#','-',$chaine);
// Remplace les tirets multiples par un tiret unique
$chaine = ereg_replace( "\-+", '-', $chaine );
// Supprime le dernier caractère si c'est un tiret
$chaine = rtrim( $chaine, '-' );
while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
return $chaine;
}
A cela s'ajoute la ligne de rewrite dans le fichier .htaccess qui pourait être :
- Code: Tout sélectionner
RewriteRule ^(.*)-([0-9]*)\.php$ page.php?titre=$1&id=$2 [L]
Note: dans ce cas précis la page affichant les données se nomme "page.php" et reçoit comme variable "titre" et "id".
En résumé :
1)Utiliser le fichier .htaccess pour le rewriting.
2) Modifier la forme des liens en fonction du rewriting utilisé.
3) Inclure une fonction pour la ré écriture.
- bibiyanki
- WRInaute discret

- Messages: 203
- Inscription: 4 Jan 2010
Re: je ne comprends pas l'url rewriting
merci de ta réponse
j'ai réussi à avoir un résultat mais ce n'est pas le bon LOL
au lieu d'écrire le titre de ma news, il écrit simplement scientifique.php
j'ai fait ça
dans mon fichier /scientifique/index.php (qui contient le code php de ma liste de news) et la page sur laquel est appelé mon script s'appelle scientifique.php
j'ai réussi à avoir un résultat mais ce n'est pas le bon LOL
au lieu d'écrire le titre de ma news, il écrit simplement scientifique.php
j'ai fait ça
dans mon fichier /scientifique/index.php (qui contient le code php de ma liste de news) et la page sur laquel est appelé mon script s'appelle scientifique.php
- Code: Tout sélectionner
<code>function mafonction($chaine)
{
$chaine=strtolower($chaine);
$accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
$sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
$chaine = preg_replace($accents, $sans,$chaine);
$chaine = preg_replace('#[^A-Za-z0-9]#','-',$chaine);
// Remplace les tirets multiples par un tiret unique
$chaine = ereg_replace( "\-+", '-', $chaine );
// Supprime le dernier caractère si c'est un tiret
$chaine = rtrim( $chaine, '-' );
while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
return $chaine;
}
?>
<table style="width:100%;">
<tr>
<td bgcolor="<?php echo(($i++ % 2 == 0) ? '#ccc' : '#ececef' ); ?>"><h4 align="center"><a href="".//scientifique2.php?id=<?php echo mafonction($donnees['titre']);?>-<?php echo $donnees['id'];?>.php"><?php echo $donnees['titre'];?></a></h4></td>
</tr>
<tr>
<td><?php echo substr($donnees['contenu'], 0, 600);?>...</td>
</tr>
</table></code>
- bibiyanki
- WRInaute discret

- Messages: 203
- Inscription: 4 Jan 2010
Re: je ne comprends pas l'url rewriting
excuse cela marche j'avais oublié
<a href="" ">
trop de "
mais il me redirectionne vers ma page d'erreur, je pense mettre tromper dans mon fichier htaccess
sachant que ma page qui liste mes news s'appelle scientifique.php et que la page ou est appelé une news s'appelle scientifique2.php
merci de vos aides
<a href="" ">
trop de "
mais il me redirectionne vers ma page d'erreur, je pense mettre tromper dans mon fichier htaccess
- Code: Tout sélectionner
RewriteEngine on
RewriteRule ^(.*)-([0-9]*)\.php$ scientifique.php/titre=$1&id=$2 [L]
sachant que ma page qui liste mes news s'appelle scientifique.php et que la page ou est appelé une news s'appelle scientifique2.php
merci de vos aides
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: je ne comprends pas l'url rewriting
Ton code ci-dessous est faux :
ça serait plutôt :
Il est inutile d'utiliser le nom de la page "scientifique2.php" dans ton lien tout comme "?id=".

Src : http://creer-un-site.fr/directive-du-fichier-htaccess-178.php
et pour le htaccess :
C'est dans la page "scientifique.php" qu'il faut ré écrire les lien et insérer la fonction
ps : tu devrais remplacer ton tableau par des div +css !
- Code: Tout sélectionner
<a href="".//scientifique2.php?id=<?php echo mafonction($donnees['titre']);?>-<?php echo $donnees['id'];?>.php"><?php echo $donnees['titre'];?></a>
ça serait plutôt :
- Code: Tout sélectionner
<a href="./<?php echo mafonction($donnees['titre']);?>-<?php echo $donnees['id'];?>.php"><?php echo $donnees['titre'];?></a>
Il est inutile d'utiliser le nom de la page "scientifique2.php" dans ton lien tout comme "?id=".

Src : http://creer-un-site.fr/directive-du-fichier-htaccess-178.php
et pour le htaccess :
- Code: Tout sélectionner
RewriteRule ^(.*)-([0-9]*)\.php$ scientifique2.php?titre=$1&id=$2 [L]
C'est dans la page "scientifique.php" qu'il faut ré écrire les lien et insérer la fonction
- Code: Tout sélectionner
<?php
function mafonction($chaine)
{
$chaine=strtolower($chaine);
$accents = Array("/é/", "/è/", "/ê/","/ë/", "/ç/", "/à/", "/â/","/á/","/ä/","/ã/","/å/", "/î/", "/ï/", "/í/", "/ì/", "/ù/", "/ô/", "/ò/", "/ó/", "/ö/");
$sans = Array("e", "e", "e", "e", "c", "a", "a","a", "a","a", "a", "i", "i", "i", "i", "u", "o", "o", "o", "o");
$chaine = preg_replace($accents, $sans,$chaine);
$chaine = preg_replace('#[^A-Za-z0-9]#','-',$chaine);
// Remplace les tirets multiples par un tiret unique
$chaine = ereg_replace( "\-+", '-', $chaine );
// Supprime le dernier caractère si c'est un tiret
$chaine = rtrim( $chaine, '-' );
while (strpos($chaine,'--') !== false) $chaine = str_replace('--','-',$chaine);
return $chaine;
}
?>
<table style="width:100%;">
<tr>
<td bgcolor="<?php echo(($i++ % 2 == 0) ? '#ccc' : '#ececef' ); ?>">
<h4 align="center"><a href="./<?php echo mafonction($donnees['titre']);?>-<?php echo $donnees['id'];?>.php"><?php echo $donnees['titre'];?></a></h4>
</td>
</tr>
<tr>
<td>
<?php echo substr($donnees['contenu'], 0, 600);?>...
</td>
</tr>
</table>
ps : tu devrais remplacer ton tableau par des div +css !
- bibiyanki
- WRInaute discret

- Messages: 203
- Inscription: 4 Jan 2010
Re: je ne comprends pas l'url rewriting
alors merci beaucoup cela marche super bien et rapidement!
par contre je ne peux pas redéclarer la fonction car j'ai des news scientifique,actualité, presse
il faut peut être juste que je change le nom "mafonction" ? je test
par contre je ne peux pas redéclarer la fonction car j'ai des news scientifique,actualité, presse
il faut peut être juste que je change le nom "mafonction" ? je test
- bibiyanki
- WRInaute discret

- Messages: 203
- Inscription: 4 Jan 2010
Re: je ne comprends pas l'url rewriting
apparemment cela ne marche pas quand on a plusieurs scripts news.
j'ai fait la même chose pour ma page news.php sauf que j'ai renommé la fonction "pomme" et j'ai changé dans le htaccess scientifique2.php par news.php
cela marche pour scientifique2.php
mais pour news.php cela ne m'affiche pas la news mais bien la page...
en faite je crois que c'est parce que ma fonction donnees s'appelle pareil pour le titre mais c'est quand même pas la même page!!
j'ai fait la même chose pour ma page news.php sauf que j'ai renommé la fonction "pomme" et j'ai changé dans le htaccess scientifique2.php par news.php
cela marche pour scientifique2.php
mais pour news.php cela ne m'affiche pas la news mais bien la page...
en faite je crois que c'est parce que ma fonction donnees s'appelle pareil pour le titre mais c'est quand même pas la même page!!
-

tryan - WRInaute passionné

- Messages: 2355
- Inscription: 20 Fév 2005
Re: je ne comprends pas l'url rewriting
Et bien tant mieux si ça fonctionne
. Pour la fonction, tu devrais la mettre dans un fichier à part genre "fonctions.php" et tu fais une simple "include"; comme ça tu peux utiliser la même fonction pour tout tes fichiers.
12 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
