it-swarm.com.de

Wie kann ich mit der htaccess-Datei zur Unterseite umleiten?

Ich habe 2 URLs. Grundsätzlich Seite und Unterseite wie unten.

  • http://example.com/services
  • http://example.com/services/service-1

Ich möchte eine 301-Umleitungsregel in die .htaccess-Datei einfügen, damit beim Öffnen der Seite:

http://example.com/services

es sollte zu seiner Unterseite umleiten:

http://example.com/services/service-1

Ich habe versucht, eine Regel in der .htaccess-Datei zu erstellen, aber sie wird als Unterseite in die Umleitungsschleife verschoben. Unten ist mein Code für die .htaccess Datei:

Redirect 301 /services /services/service-1

Update: Unten finden Sie den gesamten Code der htaccess-Datei

RewriteRule ^for-patients$ /for-patients/children [R=302,L]

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress
1
aslamdoctor
Redirect 301 /services /services/service-1

Dies führt zu einer Umleitungsschleife, da die Direktive mod_alias Redirect Präfixabgleich ist. Der Quellpfad /services entspricht also dem umgeleiteten Pfad /services/services-1 usw. usw.

Da Sie jedoch bereits mod_rewrite (als Teil von WordPress) verwenden, sollten Sie diese Umleitung auch mit mod_rewrite (im Gegensatz zu mod_alias) durchführen. Verschiedene Module werden während der Anforderung zu unterschiedlichen Zeiten ausgeführt (mod_rewrite vor mod_alias), trotz der offensichtlichen Reihenfolge in .htaccess, sodass dies zu unerwarteten Konflikten führen kann.

Versuchen Sie es stattdessen mit before Ihrem vorhandenen WordPress-Front-Controller (dh vor dem # BEGIN WordPress-Kommentar):

RewriteRule ^services$ /services/service-1 [R=302,L]

Dies stimmt nur mit der URL /services überein. Beachten Sie, dass die RewriteRule pattern kein Schrägstrich-Präfix enthält, wenn sie in .htaccess verwendet wird.

Dies ist eine temporäre (302) Umleitung. Ändern Sie dies in 301, wenn dies dauerhaft sein soll, aber erst, nachdem Sie bestätigt haben, dass es in Ordnung ist. (301s werden vom Browser standardmäßig hart zwischengespeichert, was das Testen problematisch machen kann.)

UPDATE: Damit das oben Genannte mit (oder ohne) einem abschließenden Schrägstrich am Ende der angeforderten URL funktioniert, ändern Sie das oben Genannte in:

RewriteRule ^services/?$ /services/service-1 [R=302,L]

Und sollte Ihre Ziel-URL auch einen abschließenden Schrägstrich haben, fügen Sie diesen an substitution an. dh /services/service-1, andernfalls gibt WordPress entweder eine andere Umleitung aus oder Sie erstellen möglicherweise ein Problem mit doppeltem Inhalt.

1
MrWhite