[RESOLU] URL Rewritting

Eléphanteau du PHP | 18 Messages

18 juil. 2022, 22:20

Bonsoir à tous,

J'ai un petit problème d'url rewriting.

J'ai une page article.php?id=X
Je souhaite transformer l'url en : article/X

J'ai déjà réalisé :

Code : Tout sélectionner

RewriteEngine On RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L]
Cependant, quand je vais sur le page https://X.fr/article/5 et que je recherche l'id avec :
$id = $_GET['id'];
echo var_dump($id);
Cela me renvoie la valeur NULL.
Par contre, mon code CSS fonctionne bien lorsque j'appelle ma feuille :
<link rel="stylesheet" type="text/css" href="../css/w3.css">
Ai-je oublié quelque chose ou fait une mauvaise manipulation.

Merci par avance,
bonne soirée :-D

Avatar du membre
Eléphanteau du PHP | 41 Messages

19 juil. 2022, 20:35

voila ce que moi j'utilise

Code : Tout sélectionner

<IfModule mod_rewrite.c> RewriteEngine On # Do not enable rewriting for files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /Eukaruon/index.php?page=$1 [L] </IfModule>

Eléphanteau du PHP | 18 Messages

20 juil. 2022, 08:28

voila ce que moi j'utilise

Code : Tout sélectionner

<IfModule mod_rewrite.c> RewriteEngine On # Do not enable rewriting for files or directories that exist RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /Eukaruon/index.php?page=$1 [L] </IfModule>
Merci, je vais essayer ce soir !

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 juil. 2022, 10:55

Un petit outil pratique pour tester ses htaccess :
https://htaccess.madewithlove.com/
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 18 Messages

22 juil. 2022, 09:31

Un petit outil pratique pour tester ses htaccess :
https://htaccess.madewithlove.com/
J'ai pas encore eu le temps de tester, mais merci, je vais tester également cet outil !!

\:D/ \:D/

Eléphanteau du PHP | 18 Messages

22 juil. 2022, 12:58

J'ai testé l'outil et m'a indiqué que cela fonctionne lorsque j'utilise :

http://X.fr/article/1
1
RewriteEngine On
RewriteEngine was now turned on for the document.

2
RewriteRule ^article/([0-9]+)$ article.php?id=$1 [L]
The new url is http://X.fr/article.php?id=1
The tests are stopped because of the L in your RewriteRule options.
Cependant, sur ma page http://X.fr/article/1,
$id = $_GET['id'];
echo var_dump($id);
cela me renvoie : string(0) ""

je n'ai donc pas d'id et donc pas de contenu.

Je ne sais vraiment pas ou ça coince sur les vidéos que j'ai pu regarder, ils font la même chose et ils ont un id. :-? :-?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

22 juil. 2022, 17:33

var_dump() n'a pas besoin d'echo devant.

Si tu fais un var_dump($_GET) tu obtiens quoi ?
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Eléphanteau du PHP | 36 Messages

24 juil. 2022, 18:17

Voilà ce que moi je ferai

Code : Tout sélectionner

#-------------------------------------------------- # Répertoire : www #-------------------------------------------------- # Le serveur doit suivre les liens symboliques : Options +FollowSymlinks AddDefaultCharset UTF-8 # Activation du module de réécriture d'URL : <IfModule mod_rewrite.c> RewriteEngine on </IfModule> #-------------------------------------------------- # Règles de réécriture d'URL : #-------------------------------------------------- RewriteBase / DirectoryIndex index.php?page=home RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f ErrorDocument 404 /error #------------------------------------------------- # Règles de base page id slug pagination #------------------------------------------------- RewriteRule ^([a-zA-Z0-9\-]+)/?$ index.php?page=$1 [NC,L] #--------------------------------------------- # Partie post etc... #--------------------------------------------- #post RewriteRule ^post/([a-zA-Z0-9\-]+)/([a-zA-Z0-9\-]+)/?$ index.php?page=post&id=$1&slug=$2 [NC,L]
et les liens ça donnerai ça

Code : Tout sélectionner

<a href="post/<?= $works->id ?>/<?= $works->slug ?>">post</a>

Eléphanteau du PHP | 18 Messages

25 juil. 2022, 09:47

var_dump() n'a pas besoin d'echo devant.

Si tu fais un var_dump($_GET) tu obtiens quoi ?
Désolé du temps de réponse,

Merci de l'info pour le echo ! :D

Quand je met var_dump($_GET);
Cela me renvoie : array(0) { }

Mammouth du PHP | 2703 Messages

25 juil. 2022, 15:18

et https://www.php.net/manual/fr/function.phpinfo.php en ce qui concerne les variables $_SERVER ?

Eléphanteau du PHP | 18 Messages

25 juil. 2022, 21:08

et https://www.php.net/manual/fr/function.phpinfo.php en ce qui concerne les variables $_SERVER ?
Je constate bien que le id n'est pas retrouvé lorsque j'utilise https://X.fr/article/5

Quelles informations dois-je regarder ? je ne sais vraiment pas quoi regarder dans ces innombrables variables.

Merci beaucoup,

Mammouth du PHP | 2703 Messages

25 juil. 2022, 21:56

'QUERY_STRING'
'REQUEST_URI'
'PHP_SELF'
'SCRIPT_FILENAME'

Eléphanteau du PHP | 18 Messages

26 juil. 2022, 08:18

'QUERY_STRING'
'REQUEST_URI'
'PHP_SELF'
'SCRIPT_FILENAME'
Merci de votre réponse,

Voici les résultats :

QUERY_STRING : no value
REQUEST_URI : /article/5
SCRIPT_NAME : /article.php
PHP_SELF : /article.php

Mammouth du PHP | 2703 Messages

26 juil. 2022, 10:00

avec
RewriteRule ^toto/([0-9]+)$ article.php?id=$1 [L]
et
http://X.fr/toto/1
la page s'affiche toujours ?

Eléphanteau du PHP | 18 Messages

26 juil. 2022, 10:19

avec
RewriteRule ^toto/([0-9]+)$ article.php?id=$1 [L]
et
http://X.fr/toto/1
la page s'affiche toujours ?
La page https://X.fr/toto/1 me renvoie une erreur 404 lors du teste
La page https://X.fr/article/1 s'affiche, mais toujours sans les informations de la base de données : $_GET['id'] vide