如何在php中使用htaccess更改已工作的GET查询以及所请求的GET数据的更改

问题描述

我敢肯定,将要求发布在 stackoverflow 中,即可获得解决方案。

我正在一个Web应用程序上工作,在那里我有页面,每个页面的内部都有帖子功能和问题。为此,我在sql postsquestions中有两个表。现在我想要的是:
1:当用户单击帖子链接页面内)时,用户必须重定向到具有SEO友好URL的单个帖子页面

RewriteRule ^pages/([\w-]+)/?$ page.PHP?pages=$1 [QSA,NC,L]
RewriteRule ^pages/([\w-]+)/([\w-]+)/?$ page.PHP?pages=$1&title=$2 [QSA,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

此数据来自两个不同的 sql tables

解决方法

以下是您可以使用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,L]

# for URI /pages/my-page/q/my-page-first-Question 
RewriteRule ^pages/([\w-]+)/q/([\w-]+)/?$ page.php?pages=$1&question=$2 [QSA,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')
}