2009-08-17 3 views
0

Ich denke, das eine ziemlich geradlinig Frage in mod_rewrite ist:mod_rewrite - von einer Domäne in eine andere umleiten und Hinter Werte in url bewahren

ich eine Domain bekam, die zu einem anderen umleiten muss, aber jeder Wert halten nach letzter Schrägstrich (/) in der ersten URL, in der zweiten.

domain.com/4433 sollte Transfer zum domain.com/folder/?p=4333

Listed für Klarheit:

Von: domain.com/4433

An: domain.com/folder/?p=4333

Irgendwelche Ideen?

Edit: einige Tests Did, fanden wir folgende Lösung:

RewriteCond% {HTTP_HOST}^domain.com

$

RewriteRule^([0-9a-z] *) $ ?/Ordner/p = $ 1 [NC]

Grüßen - bakkelun

+0

Möchten Sie eine HTTP-Umleitung haben oder lassen Sie den Server dies im Hintergrund tun, ohne dass der Benutzer es merkt? –

+0

sollte es geschehen, ohne dass der Benutzer es bemerkt. Aber wir haben die Lösung gefunden, es war: RewriteCond% {HTTP_HOST}^domain.com $ RewriteRule^([0-9a-z] *) $/Ordner /? P = $ 1 [NC] – Coreus

Antwort

0
RewriteEngine On 
RewriteCond %{QUERY_STRING} ^$ 
RewriteRule ^(.*)$ domain.com/folder?p=$1 [R=301,L] 
+0

Wenn beide Domains laufen mit dem gleichen vhost, dann gibt es eine endlose Redirect-Schleife. – Residuum

+0

@Residuum: Nicht nur in diesem Fall. Die * Substitution * ist nur ein relativer Pfad. So würde '/ 4433' zu' /domain.com/folder? P = 4433' umgeleitet, das zu '/domain.com/domain.com/folder? P = domain.com/folder' weitergeleitet würde, das umgeleitet würde zu '/domain.com/domain.com/domain.com/folder? p = domain.com/domain.com/ordner' etc. – Gumbo

+0

Danke Jungs für meine unvorsichtige Antwort zu kommentieren. Ich habe versucht, eine (vielleicht eine andere unvorsichtige) Reparatur vorzunehmen. Ich denke, die tatsächliche Lösung würde dann davon abhängen, wie der vollständige Satz gültiger URLs nach der Domäne sucht. – Zed

0

Nur für den Fall: domain.com = domain1.com und domain2.com? domain1.com sollte auf domain2.com umgeleitet werden? Beide laufen auf demselben Server (optional)?

[EDIT:]

Wenn Sie wirklich nur das tun wollen, wie im Kommentar erwähnt, gehen Sie wie folgt:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteRule ^4433$ http://domain2.com/folder/?p=4433 [R=301,L] 

Else, wie Benedikt Eger sagte, oder mit R = 301, wenn Sie eine echte Umleitung wünschen. Oder, wenn Sie es wollen auf Zahlen nur umleiten, dann Folgendes tun:

RewriteEngine On 

RewriteCond %{HTTP_HOST} ^domain1.com$ 
RewriteRule ^([0-9])+$ http://domain2.com/folder/?p=$1 [R=301,L] 

RewriteCond prüft, ob definiert vHost domain1.com ist, aber nicht domain2.com, dann wird die Rewrite-Regel angewendet wird, und leitet über den HTTP-Status 301 [R = 301] nur Zahlenstrings (0-9) +, die aus mindestens einer Zahl bestehen, zu der angegebenen URL weiter. [L] macht dies zur letzten Regel.

+0

Vielleicht habe ich vergessen, es zu erwähnen, aber NUR Zugriffe auf Domäne/4433 sollte umleiten zu domain.com/folder/?p=4333 "domain.com" allein sollte nicht umleiten. – Coreus

+0

Sie haben etwas vermischt. '[(0-9) +]' sollte eher '([0-9]) +' sein. – Gumbo

+0

Danke, Gumbo. Ich habe diesen Tippfehler korrigiert. – Residuum

0

Falls Sie nicht wirklich wollen, aber umleiten ziemlich URLs zu haben, Sie

RewriteEngine On 
RewriteRule ^/(.+)$ /folder?p=$1 [L] 

Dies geschieht alles nach dem ersten Schrägstrich verwenden und fügt es in der 1 $ - aber nur, wenn es etwas nach der Schrägstrich. Es gibt keine Weiterleitung, so dass die Benutzer nicht bemerken.

0

Ohne weitere Informationen, versuchen Sie dies:

RewriteEngine on 
RewriteRule ^/([^/]+)$ /folder/?p=$1 

Wenn Sie die Regel in einer .htaccess-Datei verwenden möchten, entfernen Sie die führenden Schrägstriche.

Verwandte Themen