Comment modifier la requête GET déjà opérationnelle avec la modification des données GET demandées à l'aide de htaccess en PHP

Aug 24 2020

Je suis sûr qu'en publiant ici dans stackoverflow les exigences, je peux obtenir les solutions.

Je travaille sur une application Web où j'ai des pages et à l'intérieur de chaque page, il y a des fonctionnalités et des questions. Pour lequel j'ai deux tables en SQL postset questions. Maintenant, ce que je veux, c'est:
1: Lorsqu'un utilisateur clique sur le lien de publication (à l'intérieur de la page), l'utilisateur doit rediriger vers une seule page de publication avec des URL optimisées pour le référencement qui fonctionne.

RewriteRule ^pages/([\w-]+)/?$ page.php?pages=$1 [QSA,NC,L]
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.php?pages=$1&title=$2 [QSA,NC,L]
pagesest pour la GETrequête de page
titlesest pour la GETrequête de publication
questionmaintenant j'ai besoin de la GETrequête de question sur la même page que j'ai utilisée pour la GETrequête de publication .

2: Lorsqu'un utilisateur clique sur le lien de la question (à l'intérieur de la page), l'utilisateur doit rediriger vers une seule page de question.

Travail example.com/pages/my-page/my-page-first-Post
requisexample.com/pages/my-page/my-page-first-Question

Ces données proviennent de deux SQL tables

Réponses

2 anubhava Aug 24 2020 at 16:36

Voici comment vous pouvez utiliser 3 règles distinctes:

RewriteEngine On

# /pages/my-page
RewriteRule ^pages/([\w-]+)/?$ page.php?pages=$1 [QSA,NC,L]

# for URI /pages/my-page/my-page-first-Post
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.php?pages=$1&title=$2 [QSA,NC,L] # for URI /pages/my-page/q/my-page-first-Question RewriteRule ^pages/([\w-]+)/q/([\w-]+)/?$ page.php?pages=$1&question=$2 [QSA,NC,L]

À l'intérieur de votre page.phpcode, vous pouvez vérifier:

if (isset($_GET['question')) { // question page // work with $_GET['page') and $_GET['question') } else if (isset($_GET['title')) {
    // post page
    // work with $_GET['page') and $_GET['title')
} else {
    // single page
    // work with $_GET['page')
}