使用 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 重写 URL 以仅删除一个 php 文件的 $_GET 查询[重复]
同一网站空间上的两个域,但通过 htaccess 和 GET 参数具有不同的内容/语言
.htaccess 重写仍然可以使用 get 变量的漂亮 url