2010-07-30 44 views
3

我正在开发一个使用PHP的网站。 我的.htaccess有这个重写规则:使用PHP访问GET变量+ .htaccess

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

所以看起来像网址: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-book?myfield = 1 然后变成 www.example.com/book/title-of-the-book.html?myfield=1.html

还有,我无法使用通常的PHP方式访问GET变量

$variable = $_GET['myfield'] 

我该如何解决这个问题?

回答

7

指定[QSA](查询字符串追加),以便您可以将URL传递给查询字符串。

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

PS:为什么在这里使用*+会不会更好?

+0

我不知道'*'和'+'。我不太了解URL重写,所以我的一位朋友为我写了这些规则。你为什么认为应该有一个'*'而不是'+'? – rlc 2010-07-30 22:21:41

+2

'*'是零个或多个字符,即'book/.html'也是允许的。 '+'是一个或多个字符,所以'book/.html'不会匹配。 – NikiC 2010-07-31 08:58:24