2017-08-03 144 views
0

嗨我试图转换一个这样的URL;Apache重写url段和查询参数

http://www.test.com/segment/aaa?uid=1 

对此;

http://www.test.com/segment/new/aaa/u/1 

这是我能想出的最接近的,但第一个匹配是segment/aaa而不是aaa。我无法找到一种方法来隔离aaa部分,因此我可以将其更改为segment/new/aaa而不是segment/aaa。

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_URI} ^/segment/(.*) 
RewriteCond %{QUERY_STRING} ^([up])id=(.*)$ 
RewriteRule ^(.*)$ segment/new/$1/%1/%2? [L] 

,这产生的URL是:

https://www.test.com/segment/new/segment/aaa/u/3 

谢谢!

+0

submask'$ 1'包含'segment /'。尝试这个正则表达式'^ segment /([^ /] *)$' – Deadooshka

+0

这产生了与我上面相同的输出。为什么该匹配包含整个字符串而不是像其他的正则表达式部分? – Jonathan

回答

0

Got it!

RewriteCond %{QUERY_STRING} ^([up])id=(.*)$ [NC] 
RewriteRule ^segment/(.*) segment/new/$1/%1/%2? [L]