Problème avec htaccess

Par Yubo, il y a 10 ans


Bonjour,
veuillez m'excuser si la catégorie n'est pas bonne, j'ai jugé que c'était la meilleure pour traiter mon sujet

alors je m'explique, à la base j'ai des urls comme ça http://monsite/stream?slug=mon-stream
donc pour reformuler les urls, dans mon cas
http://monsite.fr/stream/slug/mon-stream j'ai utiliser url rewriting

Options +FollowSymLinks RewriteEngine On RewriteRule stream/slug/(.*)/ stream.php?slug=$1 RewriteRule stream/slug/(.*) stream.php?slug=$1

le problème c'est qu'avec mon script php il me dit que la chaîne n'existe pas

if(!empty($_GET['slug'])){ $slug = $_GET['slug']; $req = $pdo->prepare("SELECT * FROM channels WHERE slug = ?"); $pdo->exec("SET CHARACTER SET utf8"); $req->execute([$_GET['slug']]); $result = $req->fetch(); if(!$result){ require 'views/stream/deleted.php'; require_once 'views/partials/_scripts.php'; exit(); } }else{ require 'views/stream/deleted.php'; require_once 'views/partials/_scripts.php'; exit(); }

Et donc, à ce moment la je bloque complêtement ...

Si vous avez une idée, je prend.
Merci

10 réponses

stephweb, il y a 10 ans

Bonjour,
je pense que la ré-écriture doit + etre comme ceci:

RewriteRule ^stream/slug/(.*)$ stream?slug=$1 [L]
Yubo, il y a 10 ans

Bonjour,
toujours le même résultat, il n'y a pas une possibilité de parser avec php?

Lartak, il y a 10 ans

Bonjour.
Tu peux créer un routeur par exemple, de manière à interpréter ta ré-écriture d'url depuis ton application en PHP :
Tutoriel Vidéo PHP » Créer un Router.
Ou bien d'utiliser une librairie qui en utilise un, comme par exemple Slim.

Spiker, il y a 10 ans

Ce que tu peux faire, c'est récuperer ton url, et la parser avec une regexp.

//Cheche dans l'url tout ce qu'il y a après slug/, et remplis la variable $slug preg_match('/(?<=slug\/).*/', $_SERVER['REQUEST_URI'], $slug);

$slug sera un array, pense à bien récuperer ce que tu souhaite à l'intérieure ($slug[0] par exemple).

Yubo, il y a 10 ans

Salut Spiker,
merci pour ta réponse, ça fonctionne bien j'ai juste une dernière demande, pourrais-tu modifier le code que tu m'as donné pour que l'url soit de cette façon:
http://monsite.fr/stream/mon-stream
J'ai enlever le /slug/ car ça faisais pas très beau

Merci beaucoup!

Yubo, il y a 10 ans

Même pas... J'ai pas réussis :/ moi et les expressions régulières ...

Spiker, il y a 10 ans

C'est si compliqué de remplacer "slug" par "stream" dans l'expression régulière...?

Yubo, il y a 10 ans

tu n'as pas compris
Les urls sont comme ça la: monsite.fr/stream/slug/mon-stream
et j'aimerais enlever le slug pour que ça fasse comme ça: monsite.fr/stream/mon-stream

Spiker, il y a 10 ans

Bein c'est exactement ce que je dis...

Tu remplace

preg_match('/(?<=slug\/).*/', $_SERVER['REQUEST_URI'], $slug);

par

preg_match('/(?<=stream\/).*/', $_SERVER['REQUEST_URI'], $slug);
Spiker, il y a 10 ans

Je pense que tu as déjà du trouver la solution par toi même :)