使用 PHP + .htaccess 访问 GET 变量

Posted

技术标签:

【中文标题】使用 PHP + .htaccess 访问 GET 变量【英文标题】:Access GET variables with PHP + .htaccess 【发布时间】:2011-03-23 11:39:36 【问题描述】:

我正在使用 php 开发一个网站。 我的 .htaccess 有这个重写规则:

RewriteEngine On
RewriteRule ^book/([^/]*)\.html$ book.php?title=$1 [L]

所以 URL 看起来像:www.example.com/book.php?title=title-of-the-book 变成 www.example.com/book/title-of-the-book.html

在特定情况下,我想从网站的另一个页面链接到这样的页面: www.example.com/book.php?title=title-of-the-book?myfield=1 然后变成 www.example.com/book/title-of-the-book.html?myfield=1.html

在那里,我无法使用通常的 PHP 方式访问 GET 变量

$variable = $_GET['myfield']

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

指定[QSA](附加查询字符串),这样您就可以在您的网址之后传递一个查询字符串。

RewriteEngine On
RewriteRule ^book/([^/]*)\.html$ book.php?title=$1 [QSA,L]

PS:你为什么在这里使用*+ 不是更适合吗?

【讨论】:

我不知道 *+ 。我对 URL 重写不是很了解,所以我的一个朋友为我写了这些规则。为什么你认为应该有 * 而不是 + * 是零个或多个字符,即book/.html 也将被允许。 + 是一个或多个字符,所以 book/.html 不会被匹配。

以上是关于使用 PHP + .htaccess 访问 GET 变量的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 使用 php $_GET 缩短 URL

htaccess 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]

同一网站空间上的两个域,但通过 htaccess 和 GET 参数具有不同的内容/语言

.htaccess 重写仍然可以使用 get 变量的漂亮 url

使用 .htaccess 拒绝访问目录中的所有 PHP 文件

在 $_GET 中使用转义 & 符号的 htaccess 重写规则失败