Mod_Rewrite修改查询string帮助

我需要一些mod_rewrite规则的帮助。

我正在build立一个search引擎友好的名称导演,并遇到一些问题,我知道有一个简单的答案,但我不能得到它的工作来挽救我的生命。

以下是我们想要发布的示例url

http://www.foo.com/bar/ca/marina-del-ray/first-last.html

后端url需要如下所示
/酒吧/?searchState = CA&searchCity =docker+德尔+射线的firstName&第一=&lastName的最后=

正如你所看到的城市,我需要用“+”replace“ – ”

任何帮助都会大大的提高,我希望能够使这个规则足够dynamic,如果一个城市名称包含1或15个单词,它仍然会转移,而不必为每个创build15个独立的规则。

非常感谢任何input或解决scheme。

听起来像一个破碎的logging(因为我在这里提供了一个类似的解决scheme),这听起来像另一种情况下,编程的RewriteMap将运作良好。

在你的Apacheconfiguration中,像这样:

RewriteMap rewriter prog:/path/to/script RewriteRule ^(.*) %{rewriter:$1} [L] 

在你的脚本中,像这样:

 #!/perl $| = 1; # /bar/ca/marina-del-ray/first-last.html while (<STDIN>) { my @parts = split /\//; my @name = split /-/, $parts[4]; $name[1] =~ s/\.html$//; grep { s/-/+/g } @parts; print "/$parts[1]/?searchState=$parts[2]&searchCity=$parts[3]&", "firstName=$name[0]&lastName=$name[1]", "\n"; } 

这将完全执行您请求的URL转换。 请注意,这只是示例代码 – 一个真正的解决scheme将需要更强大。