IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Redirection ne se fait pas htacces API REST PHP


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2020
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Redirection ne se fait pas htacces API REST PHP
    Bonjour,

    J'espère publier au bon endroit.

    Je suis en train de créer une petite API sur mon site en suivant ce tuto : https://waytolearnx.com/2019/07/cree...oogle_vignette

    Tout fonctionne sauf la redirection :

    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^[^/]+/(\d+)$ api/produits.php?id=$1

    Je peux accéder à l'adresse monsite.com/api/produits/ qui me liste bien mes éléments mais quand je fais monsite.com/api/produits/1 pour avoir le listing précis selon l'id renseigné

    Je n'arrive pas avoir la sélection uniquement avec l'id

    Je n'y connais rien du tout en rewriting d'url pour htacces.

    Comment faire ?

    Je vous remercie d'avance et bonne journée.

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 220
    Points : 15 511
    Points
    15 511
    Par défaut
    quelle est la règle que vous avez mise pour gérer l'url api/produits/ sans l'identifiant ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2020
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Voici la règle que j'ai mis dans le HTACCESS

    Code apache : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RewriteEngine On 
    RewriteRule ^api/produits/?$ api/produits.php [NC,L]

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 220
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 220
    Points : 15 511
    Points
    15 511
    Par défaut
    ah oui je viens de voir que c'est l'expression régulière qui ne va pas.
    Citation Envoyé par tintin85 Voir le message
    ^[^/]+/(\d+)$
    en traduisant c'est : un texte sans "/", suivi de "/", suivi d'un nombre.
    donc ça peut être produits/1 ou bonjour/1 mais pas api/produits/1 puisqu'il y a 2 "/" dans la chaine.

    essayez plutôt ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^api/produits/(\d+)$ api/produits.php?id=$1
    et pour tester les expressions régulières, il y a ce site qui peut aider :
    https://regex101.com/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2020
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Avril 2020
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci, effectivement cela fonctionne.

    En revanche je ne peux pas faire fonctionner mon API quand l'id est composé de lettres, comment faire ?

    Merci d'avance pour l'aide

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Bonjour,

    C'est un peu large mais vous pourriez remplacer \d+ par .+.
    \d représente spécifiquement un nombre, alors que . représente tout est n'importe quoi.

    Si vous souhaitez limiter un peu ce qu'on peut écrire dans l'URL, vous pourriez écrire : [a-zA-Z0-9]+ (ceci prend tout l'alphabet en minuscules + majuscules ainsi que tous les chiffres. Attention que les caractères spéciaux (par exemple "é") ne sont pas acceptés par cette règle)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^api/produits/(.+)$ api/produits.php?id=$1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RewriteRule ^api/produits/([a-zA-Z0-9]+)$ api/produits.php?id=$1

Discussions similaires

  1. [PHP 7] API Rest PHP et session
    Par grinder59 dans le forum Langage
    Réponses: 2
    Dernier message: 12/05/2020, 10h49
  2. Api rest ne fonctionne pas en "POST"
    Par Romain_cyb64 dans le forum Langage
    Réponses: 4
    Dernier message: 31/07/2017, 11h54
  3. Réponses: 5
    Dernier message: 01/09/2016, 18h37
  4. [XHTML 1.0] La redirection HTML ne se fait pas ?
    Par marot_r dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 26/08/2009, 22h51
  5. [Authentification] API REstful PHP
    Par yoshï dans le forum REST
    Réponses: 1
    Dernier message: 22/07/2008, 10h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo