2010-06-16 46 views
0

我想改写:阿帕奇重写 - 把查询字符串的部分替换字符串

www.example.com/file.html?username=john &数= 1234

要:

www.example.com/users/john

但我无法弄清楚如何从查询字符串中提取“用户名”值。我一直在使用谷歌搜索并阅读官方文档,但没有运气。我需要用重写来解决这个问题,而不是改变应用程序。

任何帮助非常感谢! Rangi

回答

0
RewriteCond %{QUERY_STRING} username=([^&]+) 
RewriteRule /?file.html /users/%1 

http://example.com/file.html?username=foobar然后将您重定向到http://example.com/users/foobar,添加[R]到最后,如果你需要一个外部重定向。

晴的重写完成倒过来,也很少看到有人谁在“外部”的网址查询字符串,但没有他们内部。还是我理解你的问题?

+0

嗨Wrikken,谢谢你的回复。是的,我实际上是在试图“倒退”,而不是大多数人正在做的事情!我们的旧应用程序使用查询字符串,但新的应用程序使用更清晰的URL /用户/ foobar,所以我试图将旧应用程序的请求重定向到新应用程序。 – rangfu 2010-06-16 17:23:22

0

好吧我已经解决了这个使用两条规则,虽然不知道如果我这样做是最好的方式。

RewriteRule ^file.html xxx/%{QUERY_STRING} [L] 
RewriteRule ^xxx/[^=]*=([^&]*) /users$1 [R=301,L] 

的第一个规则,使URL的查询字符串的一部分,所以第二条规则可以看到它,因此匹配和重写它的一部分。我使用“xxx”,但它可能是任何东西。