我想改写:
www.example.com/file.html?username=john&number=1234
要:
www.example.com/users/john
但我无法弄清楚如何从查询字符串中提取“用户名”值。我整个早上一直在谷歌上搜索官方文档,但没有运气。我需要通过重写来解决这个问题,而不是更改应用程序。
任何帮助非常感谢! Rangi
答案 0 :(得分:0)
RewriteCond %{QUERY_STRING} username=([^&]+)
RewriteRule /?file.html /users/%1
转到http://example.com/file.html?username=foobar会将您重定向到http://example.com/users/foobar,如果您需要外部重定向,请在最后添加[R]
。
大多数情况下,重写是以相反的方式完成的,很少见到想要在“外部”网址中的查询字符串,但内部没有它们的人。或者我向后理解你的问题了吗?
答案 1 :(得分:0)
好的,我已经用两条规则解决了这个问题,虽然不确定我是不是最好的方式。
RewriteRule ^file.html xxx/%{QUERY_STRING} [L]
RewriteRule ^xxx/[^=]*=([^&]*) /users$1 [R=301,L]
第一条规则使查询字符串成为URL的一部分,因此第二条规则可以看到它,因此匹配并重写它的一部分。我使用“xxx”但它可以是任何东西。