it-swarm.com.de

Alle untergeordneten Seiten von der Unterdomäne umleiten

Ich kann diese Weiterleitung nicht zum Laufen bringen. Kann mich jemand in die richtige Richtung lenken?

Auf einer WordPress Site möchte ich den Zugriff auf alle Seiten unter einer bestimmten übergeordneten Seite verhindern. Ich möchte, dass die Leute nur diese übergeordnete Seite sehen.

Also, wenn example.com/subdomain/parent-page besteht aus:

parent-page
parent-page/sub-page-1
parent-page/sub-page-2 
...and so on

Ich möchte, dass alle übereinstimmenden Unterseiten zu example.com/subdomain/parent-page umgeleitet werden.

Meine . Htaccess Datei befindet sich im Stammverzeichnis von example.com/subdomain.

Ich denke, ich brauche RedirectMatch dafür, damit ich Regex verwenden kann.

Aber alle meine Variationen von:

RedirectMatch 301 parent-page/?* example.com/subdomain/parent-page

Arbeiten Sie nicht aus dem einen oder anderen Grund. Das beste Ergebnis, das ich erzielt habe, ist die Weiterleitung von Seiten auf die Seite "Seite nicht gefunden" der übergeordneten Domain!

Klar, dass mir hier etwas fehlt?

5
colic

Auf einer WordPress Site

WordPress verwendet mod_rewrite, um das URL-Routing (hübsche URLs) zu handhaben - von denen ich annehme, dass Sie sie verwenden -, daher sollten Sie in diesem Fall die Verwendung einer mod_alias-Umleitung (Redirect, RedirectMatch usw.) vermeiden. (Verschiedene Module werden unabhängig von der Reihenfolge der Anweisungen in der .htaccess-Datei zu unterschiedlichen Zeiten ausgeführt, sodass unerwartete Ergebnisse/Konflikte auftreten können. Mod_rewrite normalerweise wird vor mod_alias ausgeführt.)

In .htaccess ist es einfach genug, example.com/subdomain/parent-page/<anything> umzuleiten, aber wenn Sie nur vorhandene WordPress Seiten und 404 umleiten möchten, wenn diese Seite nicht existiert, dann ist das komplexer und Sie sollten wahrscheinlich ein _ suchen.WP Lösung, anstatt .htaccess.

Versuchen Sie Folgendes am oberen Rand Ihrer example.com/subdomain/.htaccess -Datei. Diese Anweisungen müssen kommen vor alle vorhandenen Routing-Anweisungen WordPress.

RewriteEngine On
RewriteRule ^parent-page/. /subdomain/parent-page [R=302,L]

Ändern Sie die (temporäre) Umleitung 302 in 301 (permanent), wenn Sie sicher sind, dass sie ordnungsgemäß funktioniert. (301 werden vom Browser zwischengespeichert, was das Testen problematisch machen kann.)

Jede URL, die /subdomain/parent-page/<something> startet, wird umgeleitet (unabhängig davon, ob diese Unterseite existiert oder nicht). Dies hilft auch, eine Umleitungsschleife zu vermeiden.

RewriteEngine muss nur einmal in der .htaccess-Datei erscheinen - vorzugsweise (logischer) oben.


RedirectMatch 301 parent-page/?* example.com/subdomain/parent-page

Nebenbei ... Hier stimmt einiges nicht. Der reguläre Ausdruck ist nicht streng gültig. * stimmt mit dem vorangegangenen Zeichen 0 oder mehr Mal überein (das vorangegangene Zeichen ist ?, das selbst ein Metazeichen ist). Wenn Sie die Domain in der Ziel-URL angeben, muss sie mit Protokoll usw. absolut sein.

3
MrWhite