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


Spiker
Réponse acceptée

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).

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

RewriteRule ^stream/slug/(.*)$ stream?slug=$1 [L]
Yubo
Auteur

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

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.

Yubo
Auteur

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!

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

Yubo
Auteur

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

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

Yubo
Auteur

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

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);