2017-05-17 27 views
1

基本上,我发送了一个查询字符串,我需要将其重新格式化为一个URL,其中的值由斜杠分开,并且其中一个值从其中一个值中清除。我可以做任何一件事情,但是当我尝试将它们链接在一起时,它不起作用。将第二个mod_rewrite应用到查询

这里是原来的URL

https://www.example.com/?id1=5&id2=7&id3=9&id4=7&id5=source.website.com&id6=5 

这是我现在所拥有的......

# Takes the dots and replaces name of server 
RewriteCond %{QUERY_STRING} ^(.*source.website.com.*)$ 
RewriteCond %{QUERY_STRING} (.*id5=).*(id6=.*)$ 
RewriteRule ^(.*) %1newwebsitecom&%2? 

# Rewrites Query to URL 
RewriteCond %{QUERY_STRING} ^id1=(\w+)&id2=(\w+)&id3=(\w+)&id4=(\w+)&id5=([a-zA-Z0-9\.\%]+)&id6=(\w+) 
RewriteRule ^(.*) https://www.example.com/dir/%1/%2/%3/%5/%6? 

另外,这两种工作。但是,第二条规则只是简单地查询并执行操作,就好像第一条规则从未发生过一样。我该如何解决这个问题?

回答

1

您是否尝试过合并两条规则?

我测试了这个规则集htaccess.madewithlove.be,它似乎达到了预期的结果。

RewriteCond %{QUERY_STRING} ^(.*source.website.com.*)$ 
RewriteCond %{QUERY_STRING} (.*id5=).*(id6=.*)$ 
RewriteCond %{QUERY_STRING} ^id1=(\w+)&id2=(\w+)&id3=(\w+)&id4=(\w+)&id5=([a-zA-Z0-9\.\%]+)&id6=(\w+) 
RewriteRule ^(.*) https://www.example.com/dir/%1/%2/%3/%4/newwebsitecom/%6? 
+0

这是一个好主意和作品,但我仍然不明白原来的问题。我也不明白,为什么没有[L]标志就无法运作。 –