2017-05-26 4 views
0

Ich habe einige super seltsame URLs, die ich umleiten muss. Die Original-URLs wie folgt aussehen:Apache Mod_Rewrite leere Abfrage Zeichenfolge gefolgt von Schrägstrich

server1.com/directory?/tfoo 

Diese URLs hier gehen muss:

server2.com/search~?query=foo 

ich ein paar verschiedene Möglichkeiten ausprobiert habe, aber das ist, was mit gerade jetzt arbeite ich:

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

Grundsätzlich ich dachte, ich würde für eine leere Abfrage-String suchen, und dann versuchen, sich zu bewegen, den Wert in der Verzeichnisstruktur (foo) gegeben zu greifen. Der RewriteCond stimmt mit meiner ursprünglichen URL überein, aber ich kann nicht den tatsächlichen Abfrageparameter abrufen.

Ich habe eine Menge Dinge mit RegEx ausprobiert, um zu versuchen, das Fragezeichen insgesamt zu ignorieren, aber es sieht so aus, als ob mod_rewrite das Fragezeichen nur im Kontext einer Abfrageparameterumleitung versteht.

Jeder Rat wird sehr geschätzt.

Danke!

+0

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

+0

Danke, @Deadooshka, das hat funktioniert! – lpm

Antwort

0

Deadooshka-Lösung (kommentiert oben) gearbeitet:

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

Sie können diese verwenden:

RewriteEngine on 

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