www.example.com/file.html?username=john &数= 1234
要:
www.example.com/users/john
但我无法弄清楚如何从查询字符串中提取“用户名”值。我一直在使用谷歌搜索并阅读官方文档,但没有运气。我需要用重写来解决这个问题,而不是改变应用程序。
任何帮助非常感谢! Rangi
www.example.com/file.html?username=john &数= 1234
要:
www.example.com/users/john
但我无法弄清楚如何从查询字符串中提取“用户名”值。我一直在使用谷歌搜索并阅读官方文档,但没有运气。我需要用重写来解决这个问题,而不是改变应用程序。
任何帮助非常感谢! Rangi
RewriteCond %{QUERY_STRING} username=([^&]+)
RewriteRule /?file.html /users/%1
要http://example.com/file.html?username=foobar然后将您重定向到http://example.com/users/foobar,添加[R]
到最后,如果你需要一个外部重定向。
晴的重写完成倒过来,也很少看到有人谁想在“外部”的网址查询字符串,但没有他们内部。还是我理解你的问题?
好吧我已经解决了这个使用两条规则,虽然不知道如果我这样做是最好的方式。
RewriteRule ^file.html xxx/%{QUERY_STRING} [L]
RewriteRule ^xxx/[^=]*=([^&]*) /users$1 [R=301,L]
的第一个规则,使URL的查询字符串的一部分,所以第二条规则可以看到它,因此匹配和重写它的一部分。我使用“xxx”,但它可能是任何东西。
嗨Wrikken,谢谢你的回复。是的,我实际上是在试图“倒退”,而不是大多数人正在做的事情!我们的旧应用程序使用查询字符串,但新的应用程序使用更清晰的URL /用户/ foobar,所以我试图将旧应用程序的请求重定向到新应用程序。 – rangfu 2010-06-16 17:23:22