Zur Navigation

Von Subdomain zu anderer Subdomain und Verzeichnis austauschen

1 HansXL (Gast)

ich habe solche alte URLs

http://subdomain1.domain.com/category/linux/
http://subdomain1.domain.com/category/windows/
usw.

und will das nun weiterleiten auf
http://subdomain2.domain.com/blog/linux/
http://subdomain2.domain.com/blog/windows/
usw.

ich habe schon einen ganz guten Ansatz
RewriteCond %{HTTP_HOST} subdomain1\.domain\.com$
RewriteCond %{REQUEST_URI} ^\/category\/(.*)$
RewriteRule ^(.*)$ http://subdomain2.domain.com/blog/$1 [L,R=301]

Aber da bleibt dieses "category" stehen:
http://subdomain2.domain.com/blog/category/linux/

Und wenn ich versuche "category" so rauszunehmen, dann geht gar nichts
RewriteRule ^(/category/.*)$ http://subdomain2.domain.com/blog/$1 [L,R=301]

Ich dachte, das
$1
ist sozusagen die Variable, die sich auf das erste
(.*)
bezieht.

Was mache ich falsch?

10.04.2019 18:28

2 Jörg Kruse

$1 bezieht sich auf den ersten geklammerten Audruck der RewriteRule. Die geklammerten Ausdrücke der Bedingungen werden mit %1, %2 etc. referenziert.

Die zweite Bedingung benötigst du hier aber auch gar nicht:

RewriteCond %{HTTP_HOST} subdomain1\.domain\.com$
RewriteRule ^/?category/(.*)$ http://subdomain2.domain.com/blog/$1 [L,R=301]

10.04.2019 19:46

3 HansXL (Gast)

Oha, das funktioniert.

Du schreibst
$1 bezieht sich auf den ersten geklammerten Audruck der RewriteRule. Die geklammerten Ausdrücke der Bedingungen werden mit %1, %2 etc. referenziert.

Aber im RewriteRule gibt es gar kein geklammerten Ausdruck?

10.04.2019 20:16

4 HansXL (Gast)

Ich möchte ja,

http://subdomain1.domain.com/category/linux/
http://subdomain1.domain.com/category/windows/
auf das weiterleiten
http://subdomain2.domain.com/blog/linux/
http://subdomain2.domain.com/blog/windows/

und Beiträge so weiterleiten
http://subdomain1.domain.com/linux/ubuntu-installieren/
http://subdomain2.domain.com/blog/linux/ubuntu-installieren/

RewriteCond %{HTTP_HOST} subdomain1\.domain\.com$
RewriteRule ^/?category/(.*)$ http://subdomain2.domain.com/blog/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^subdomain1\.domain\.com
RewriteRule ^(.*)$ http://subdomain2.domain\.com/blog/$1 [L,R=301]

Dafür gehen ja jetzt diese beiden Anweisungen. Muss ich da was beachten?

Danke im Voraus

10.04.2019 20:19

5 HansXL (Gast)

Es schon ein wenig spät. Ich habe da
eckig geklammert
gelesen. Sorry.

10.04.2019 20:20

6 Jörg Kruse

Mit deiner Reihenfolge der Direktiven sollte es keine Probleme geben, weil die spezielle Weiterleitung vor der allgemeinen abgearbeitet wird: zuerst werden die URLs weitergeleitet, die "/category/" im Pfad enthalten, dann alle übrigen.

10.04.2019 20:45

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]