So ändern Sie bereits funktionierende GET-Abfragen mit der Änderung der angeforderten GET-Daten mithilfe von htaccess in PHP

Aug 24 2020

Ich bin sicher, wenn ich hier im Stackoverflow mit den Anforderungen poste, kann ich die Lösungen erhalten.

Ich arbeite an einer Webanwendung, in der ich Seiten habe und auf jeder Seite befinden sich Beiträge, Funktionen und Fragen. Für die ich zwei Tabellen in SQL postsund habe questions. Was ich jetzt möchte, ist:
1: Wenn ein Benutzer auf den Post-Link (innen auf der Seite) klickt, muss der Benutzer zu einer einzelnen Post-Seite mit SEO-freundlichen URLs umleiten, was funktioniert.

RewriteRule ^pages/([\w-]+)/?$ page.php?pages=$1 [QSA,NC,L]
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.php?pages=$1&title=$2 [QSA,NC,L]
pagesist für die GETSeitenabfrage
titlesist für die GETPostabfrage
questionjetzt brauche ich für die GETFragenabfrage auf derselben Seite, die ich für die GETPostabfrage verwendet habe.

2: Wenn ein Benutzer auf den Fragenlink (innen auf der Seite) klickt, muss er zu einer einzelnen Fragenseite umleiten.

Arbeiten example.com/pages/my-page/my-page-first-Post
erforderlichexample.com/pages/my-page/my-page-first-Question

Diese Daten stammen aus zwei verschiedenen SQL tables

Antworten

2 anubhava Aug 24 2020 at 16:36

So können Sie 3 separate Regeln verwenden:

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]

In Ihrem page.phpCode können Sie überprüfen:

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')
}