Cách thay đổi truy vấn GET đã hoạt động bằng cách thay đổi dữ liệu GET được yêu cầu bằng htaccess trong php

Aug 24 2020

Tôi chắc chắn bằng cách đăng ở đây trong stackoverflow với các yêu cầu tôi có thể nhận được các giải pháp.

Tôi đang làm việc trên một ứng dụng web mà tôi có các trang và bên trong mỗi trang, có các tính năng và câu hỏi của bài đăng. Tôi có hai bảng trong SQL postsquestions. Bây giờ Điều tôi muốn là:
1: Khi người dùng nhấp vào liên kết bài đăng (bên trong trang), người dùng phải chuyển hướng đến một trang bài đăng duy nhất với các URL thân thiện với SEO đang hoạt động.

RewriteRule ^pages/([\w-]+)/?$ page.php?pages=$1 [QSA,NC,L]
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.php?pages=$1&title=$2 [QSA,NC,L]
pageslà cho GETtruy vấn trang
titleslà cho GETtruy vấn bài đăng,
questionbây giờ tôi cần cho GETcâu hỏi Truy vấn trên cùng một trang mà tôi đã sử dụng cho GETtruy vấn bài đăng .

2: Khi người dùng nhấp vào liên kết câu hỏi (bên trong trang), người dùng phải chuyển hướng đến một trang câu hỏi duy nhất.

example.com/pages/my-page/my-page-first-Post
Yêu cầu làm việcexample.com/pages/my-page/my-page-first-Question

Dữ liệu này đến từ hai SQL tables

Trả lời

2 anubhava Aug 24 2020 at 16:36

Đây là cách bạn có thể sử dụng 3 quy tắc riêng biệt:

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]

Bên trong page.phpmã của bạn, bạn có thể kiểm tra:

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