Bonjour, je travaille avec easyPhp version et je voudrais configurer mon serveur pour accepter les url rewrite.
Comment configurer?
Bonjour, je travaille avec easyPhp version et je voudrais configurer mon serveur pour accepter les url rewrite.
Comment configurer?
Un petit passage par les tutos.
J'ai une autre préoccupation, pour un site dynamique (Mysql/Php). Avec un lien dt type :
Comment procéder?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="article.php?id=$data->idarticle">suite</a>
J'ai trouvé une solution mais j'ai une erreur 404 (page not fond).
Ficher .htaccess
Ficher Php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z]+)\.htm$ /article.php?p=$2[L]
Code : Sélectionner tout - Visualiser dans une fenêtre à part <a href="<?php echo "article-".$data->idart."-".$data->alias.".html";?>"><span class="FontTexteArt"><?php echo $data->titreart?></span></a>
Ca arrive. Tu peux donner un exemple de lien généré par ton code PHP et qui mène à une erreur 404 ?
Dans ton .htaccess, tu as essayé de retirer le / devant article.php (second membre de ta RewriteRule) ?
T'as html dans ton lien et htm dans la RewriteRule.
Il faut que le lien que tu génères en php colle parfaitement avec ta rewriterule.
J'ai apporté les correction mais c'est pareil.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z]+)\.html$ article.php?p=$2[L]
Quelles corrections ? Donne nous un exemple de code HTML de lien qui ne marche pas comme déjà demandé.
Code HMLT de la page index.
Code du fichier .htaccess
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <div style="padding:5px 5px;"> <a href="<?php echo "article-".$data->idart."-".$data->alias.".html";?>"> <span class="FontTexteArt"><?php echo $data->titreart?></span></a> <p class="FontTexteGris12"><?php echo $data->dateart?></p> <img src="photo/<?php echo $data->imageart?>" class="img1" /> <p style="float:right;"> <?php echo nl2br(substr($data->article, 0,400))?><a href="actualite.php?id=<?php echo $data->idart?>" title="Lire l'article complet"><span class="FontTexteMore"> Lire la suite</span></a> </p> </div>
Le soucis c'est comment récuperer l'id de l'article pour ma page article (page d'affichage) lorsque je click sur le lien?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z]+)\.html$ article.php?p=$2[L]
J'ai fini par trouver ce qui clochait.
mon expression régulière n'était pas bonne.
\-manquait
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z\-]+)\.html$ article.php?p=$1[L]
Juste une dernière chose,
je voudrais faire une redirection à la bonne url au cas où on changeais l'url de la barre en modifiant des caractères.
Mais mes navigateur de test (Chrome et fireFox) m'indique une boucle de redirection.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $sqlArt = "SELECT * FROM article WHERE idart=".$_GET['p']; $sqlArt = $connect_db->query($sqlArt); $dataArt = $sqlArt->fetch(PDO::FETCH_OBJ); if($dataArt->alias != $_GET['p']){ header('Status: 301 Moved Permanently', false, 301); header('Location:article-'.$_GET['p'].'-'.$dataArt->alias.'.html'); }
Essaie plutotEDIT : En me relisant je suis même pas sûr de ce que tu veux faire.... idart est toujours égal à $_GET[p] et toujours différent de alias non ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if($dataArt->idart != $_GET['p']){
Je vais essayer d'être plus clair.
un internaute accède à ma page article en cliquant sur le lien.
dans ma barre d'adresse j'ai ça: article-13-me-revoir-la.html
il s'amuse à enlever le "e" de me et actualise la page pour voir ce qui se passe.
Je souhaite qu'après l'actualisation de la page , la bonne url soit réécrite
comme : article-13-me-revoir-la.html
au lieu de
article-13-m-revoir-la.html
Il faut gérer ça en PHP : au début de ta page, avant la toute première balise HTML, il faut que tu vérifiés que le titre récupéré est le bon, et que s'il n'est pas bon, tu rediriges avec le bon titre. Apache ne peut pas t'aider dans cette affaire.
Le souci c'est que tu compares $_GET['p'] qui contient l'id d'article avec l'alias... C'est donc toujours différent et donc tu rediriges à chaque fois.
Problème résolu, il fallait récupérer aussi le paramètre "alias".
La redirection
Fichier htaccess
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 $p = $_GET['p']; $alias = $_GET['alias']; $sqlArt = "SELECT * FROM article WHERE idart=".$p; $sqlArt = $connect_db->query($sqlArt); $dataArt = $sqlArt->fetch(PDO::FETCH_OBJ); if($dataArt->alias != $alias){ header("Location:article-".$p."-".$dataArt->alias.".html"); }
Le code n'est pas peut-être optimisé mais ça marche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z\-]+)\.html$ article.php?p=$1&alias=$2
Merci à tous/toute
Pour mettre plusieurs url dans mon fichier htaccess.
j'ai essayé ça mais ça marche pas ERREUR 404.
Lien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z\-]+)\.html$ article.php?p=$1&alias=$2 RewriteRule ^dossier/([0-9]+)/([A-Za-z\-]+)\.html$ dossier.php?p=$1&aliasdossier=$2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <a href="<?php echo "dossier/".$dataDos->iddossier."/".$dataDos->aliasdossier.".html";?>"><?php echo ucfirst($dataDos->titredossier) ?></a>
Dans l'error_log d'Apache tu auras un bout d'explication. Mais une fois de plus, le code HTML reçu par le navigateur et pas le code PHP nous aiderait plus.
script error_log:
Je met tous les codes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 127.0.0.1 - - [21/Jul/2013:10:06:03 +0000] "GET /sciencesetprogres/dossier/2/le-co2-mauvais-utilisation-d-une-richesse.html HTTP/1.1" 404 1353 127.0.0.1 - - [21/Jul/2013:10:06:05 +0000] "GET /favicon.ico HTTP/1.1" 404 1123
fichier htaccess:
Fichier contenant le lien : tous-les-dossier.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Options +FollowSymlinks RewriteEngine on RewriteRule ^article-([0-9]+)-([A-Za-z\-]+)\.html$ article.php?p=$1&alias=$2 RewriteRule ^dossier/([0-9]+)/([A-Za-z\-]+)\.html$ dossier.php?p=$1&aliasdossier=$2
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <div class="boxFolderContent" style="background-color:transparent;"> <?php try { while ($dataDos = $sql->fetch(PDO::FETCH_OBJ)){ ?> <div class="boxFolderElement" style="margin-top:5px; margin-bottom:5px;"> <img src="photo/<?php echo $dataDos->image ?>" alt="<?php echo $dataDos->titredossier ?>" style="margin-bottom:10px;" /><span class="FontBlackTexte"> <?php $sqlDom = "SELECT iddomaine, titre FROM domaine WHERE iddomaine=".$dataDos->iddomaine; $sqlDom = $connect_db->query($sqlDom); $dataIdDom = $sqlDom->fetch(PDO::FETCH_OBJ); echo stripslashes(strtoupper($dataIdDom->titre)); ?></span><br /> <span class="FontBlueDark14"><a href="<?php echo "dossier/".$dataDos->iddossier."/".$dataDos->aliasdossier.".html";?>"><?php echo ucfirst($dataDos->titredossier) ?></a></span> </div> <?php } }catch(PDOException $e){ $e->getMessage(); }?> </div>
Fichier appelé dossier.php
Code de récupération de l'Id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $p = $_GET['p']; $sqlDos = "SELECT * FROM dossier WHERE iddossier=".$p; $sqlDos = $connect_db->query($sqlDos); $dataDos = $sqlDos->fetch(PDO::FETCH_OBJ);
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager