Url Rewrite - 添加查询字符串

时间:2013-01-30 12:20:50

标签: url-rewriting

我想重写所有网址,例如

www.example.com/pages/foo

www.example.com/go.php?q=foo

我是通过使用规则belove完成的,但我也无法设法传递查询。

RewriteRule     ^pages/(.*)$            /go.php?q=$1  [L]

我想改写:

www.example.com/pages/foo?bar=baz

www.example.com/go.php?q=foo&bar=baz

我该怎么做?

1 个答案:

答案 0 :(得分:2)

发现它!

网址:/pages/foo?bar=baz

RewriteRule ^pages/(.*) /go.php?q=$1 [QSA,L,R]

成为:/go.php?q=foo&bar=baz

发生的事情是:

  • 在斜杠后捕获所有内容并将其存储在$ 1
  • 在/go.php?q=请求资源并添加我们捕获的值
  • [R]更改显示的网址(否则我们会看到网址没有变化,但我们点击了正确的网页)
  • QSA表示查询字符串附加,这是缺少的链接:)
  • [L]表示“最后一条规则”:不要寻找更多匹配

希望有所帮助!

有用的链接:


第二个选项是:

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^pages/(.*) /go.php?q=$1&%1 [R]
  • 将整个查询字符串捕获为%1
  • 将/ path /后的网址捕获为 $ 1
  • 汇编替换字符串并重写URL

“除了纯文本,Substition字符串可以包含

  • 反向引用($ N)到RewriteRule模式
  • 反向引用(%N)到最后匹配的RewriteCond模式“

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule