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!
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]