it-swarm.com.de

Erstellen einer Umleitung in der .htaccess-Datei mit 2 Ausnahmen

Ich habe es also schon lange versucht, aber ich kann es scheinbar nicht zum Laufen bringen. Stellen Sie sich vor, meine Website ist https://example.com, mit den zusätzlichen Seiten https://example.com/abc und https://example.com/abc-def-g. Es ist vorgesehen, dass alle vorhandenen und nicht vorhandenen Seiten mit Ausnahme der beiden oben aufgeführten Seiten automatisch zur Startseite umgeleitet werden.

Alles, was ich versucht habe, ist fehlgeschlagen, entweder weil ich nicht auf die Website zugreifen kann oder weil ich gar nichts unternehme. Deshalb versuche ich, auf einer leeren Tafel neu anzufangen.

Dies ist derzeit die .htaccess-Datei:

# 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
# BEGIN EWWWIO
# END EWWWIO

Dies ist die Standarddatei für WordPress. Jede Hilfe wäre sehr dankbar!

1
N.Hyatt

Versuchen Sie Folgendes: vor den vorhandenen WordPress-Anweisungen:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^(abc|abc-def-g)$ / [R,L]

Dies besagt, dass für jede URL, die nicht /abc oder /abc-def-g ist und die keiner physischen Datei oder keinem physischen Verzeichnis (dh Ihren statischen Ressourcen, Bildern, CSS, JS usw.) zugeordnet ist, eine Weiterleitung zur Startseite erfolgt.

Das Präfix ! in der RewriteRule pattern negiert den regulären Ausdruck.

Dies ist eine temporäre (302) Umleitung.

Sie müssen die Anweisung RewriteEngine On nicht wiederholen.


UPDATE: Wenn Ihre URLs mit einem abschließenden Schrägstrich enden, sollten Sie die RewriteRule ändern. pattern :

RewriteRule !^(abc|abc-def-g)/$ / [R,L]

Oder machen Sie den abschließenden Schrägstrich optional:

RewriteRule !^(abc|abc-def-g)/?$ / [R,L]

Eine andere Möglichkeit, dasselbe zu schreiben, besteht darin, (wie Sie in den Kommentaren erwähnt haben) die Servervariable RewriteCond anstelle der RewriteRule mit den Anweisungen REQUEST_URI zu prüfen pattern . Dies ist möglicherweise einfacher zu lesen, jedoch etwas weniger effizient, da die Variable RewriteRule pattern immer zuerst verarbeitet wird. Zum Beispiel:

RewriteCond %{REQUEST_URI} !^/abc/?$
RewriteCond %{REQUEST_URI} !^/abc-def-g/?$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [R,L]

Welches ist das gleiche wie (alternierend):

RewriteCond %{REQUEST_URI} !^/(abc|abc-def-g)/?$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [R,L]
0
MrWhite