简体   繁体   中英

Apache Mod_Rewrite empty query string followed by slash

I have some super weird URLs I need to redirect. The original URLs look like this:

 server1.com/directory?/tfoo

These URLs needs to go here:

 server2.com/search~?query=foo

I've tried a bunch of different possibilities, but this is what I'm working with right now:

 RewriteCond %{QUERY_STRING} ^$
 RewriteRule ^/t(.*) https://server2.com/search?query=$2 [L,NE,NC]

Basically, I thought I would have to look for a blank query string, and then try to move on to grab the value given in the directory structure (foo). The RewriteCond matches my original URL, but I can't seem to grab the actual query parameter.

I've tried a bunch of things with RegEx to try to ignore the questionmark altogether, but it looks like mod_rewrite only understands the questionmark in the context of a query parameter redirect.

Any advice is hugely appreciated.

Thanks!

You can use this :

RewriteEngine on

RewriteCond %{THE_REQUEST} /directory/?/t(.+)\s [NC]
RewriteRule ^ http://server2.com/search~?query=%1 [NE,L,R]

Deadooshka's solution (commented above) worked:

    RewriteCond %{QUERY_STRING} "^/t(.*)$"
    RewriteRule "^/?directory$" "https://server2.com/search?query=%1" [L,NE,NC]`

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM