PHPでhtaccessを使用して、要求されたGETデータの変更ですでに機能しているGETクエリを変更する方法

Aug 24 2020

私が解決策を得ることができる要件でここにstackoverflowで投稿することによって私は確信しています。

私はページがあり、各ページの中に投稿機能と質問があるWebアプリケーションに取り組んでいます。SQLpostsとの2つのテーブルがありますquestions。今私が欲しいのは:
1:ユーザーが投稿リンク(ページ内)をクリックすると、ユーザーは機能しているSEOフレンドリーなURLを持つ単一の投稿ページにリダイレクトする必要があります。

RewriteRule ^pages/([\w-]+)/?$ page.php?pages=$1 [QSA,NC,L]
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.php?pages=$1&title=$2 [QSA,NC,L]
pagesですGETページのクエリ
titlesのためにあるGETポストクエリ
question今の私の必要性GET私はポストのために使用したのと同じページ上の質問クエリGETクエリ。

2:ユーザーが質問リンク(ページ内)をクリックすると、ユーザーは単一の質問ページにリダイレクトする必要があります。

example.com/pages/my-page/my-page-first-Post
必要な作業example.com/pages/my-page/my-page-first-Question

このデータは2つの異なるから来ています SQL tables

回答

2 anubhava Aug 24 2020 at 16:36

3つの別々のルールを使用する方法は次のとおりです。

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]

page.phpコード内で確認できます。

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