是否有人知道是否可以将其他变量放入您正在使用mod_rewrite的URL中,以基本上切入变量。
例如,如果我有URL:
website.com/post/53/post-title/
我正在使用mod_rewrite将其转换为:
website.com/post.php?postid=53
是否有优雅的方式将其他变量放入“预先重写”的网址并将其保留在我的post.php
脚本中?
I.E。,如果我创建如下链接怎么办?
website.com/post/53/post-title/?anothervar=6
到目前为止,似乎我的mod_rewrite代码只是丢弃了额外的变量并将URL发送到post.php
脚本,如下所示:
website.com/post.php?postid=53
我知道我可以使用$_SERVER['REQUEST_URI']
在我的php脚本(AKA website.com/post/53/post-title/?anothervar=6
)中获取原始URL,然后再通过mod_rewrite重写,然后只需将字符串删除即可添加变量,但我只是想知道是否有一个更优雅的解决方案,只使用mod_rewrite。
答案 0 :(得分:14)
您还可以使用%{QUERY_STRING}将原始查询字符串传递给新网址。或者按照你的意愿使用它,例如。
RewriteRule /pages/(.*) /page.php?page=$1&%{QUERY_STRING} [R]
答案 1 :(得分:12)
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
“qsappend | QSA”
使用,QSA使mod_rewrite在重写时正确“合并”其他参数。
RewriteRule /pages/(.+) /page.php?page=$1 [QSA]
这将为用户提出的任何请求添加“page = $ 1”。
PS。虽然小心,因为mod_rewrite会很高兴地覆盖“页面”,尽管用户指定它。我不知道这件事。