Ich freue mich über jede Anfrage
example.com/foo/anything
umgeschrieben werden example.com/foo-anything
bevor sie von WordPress verarbeitet werden.
Ich habe das versucht:
RewriteEngine On
RewriteRule ^foo/(.*) foo-$1 # <-- does not work because the subs. string should be a *file path*
# The following is set by WordPress
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
aber es funktioniert nicht, weil die Substitutionszeichenfolge (Zielzeichenfolge) ein Dateipfad sein soll, keine andere URL.
Wie erstellt man eine solche RewriteRule, bei der die Substitutionszeichenfolge kein Dateipfad, sondern eine URL ist, die von den nächsten Regeln verarbeitet werden soll?
Anmerkungen:
-
Mit
RewriteRule ^foo/(.*) foo-$1 [R]
es funktioniert, aber dann verursacht es eine Browserumleitung und die URL ändert sich in der URL-Leiste des Browserswas ich nicht will. -
Ich habe es mit versucht RewriteRule-Flag
[PT]
was auch funktionieren sollte, wenn die Substitutionszeichenfolge kein Dateipfad ist, aber es hat bei mir nicht funktioniert: es wird nicht umgeleitet/foo/anything
zu Seite/foo-anything
. -
Ich habe es versucht
RewriteRule ^foo/(.*) index.php?name=foo-$1 [L]
aber dann funktioniert es nur für Artikel, aber nicht Seiten. Ich hätte gerne eine Lösung, die sowohl für Seiten als auch für Artikel funktioniert.
Ich bin mir ziemlich sicher, dass dies zumindest teilweise ein WordPress-Problem ist. Es analysiert die ursprünglich angeforderte URL und übernimmt keine intern Umschreibungen berücksichtigt. (Wenn ja, dann würde das Ganze erstmal nicht funktionieren, weil es dann immer nur sehen würde
/index.php
und hätte keine Ahnung, welchen Inhalt es basierend darauf zeigen soll.)– CBroe
21. Oktober 2021 um 14:38 Uhr
Ich denke, Sie könnten mehr Glück haben, wenn Sie dies mit einrichten developer.wordpress.org/reference/functions/add_rewrite_rule
– CBroe
21. Oktober 2021 um 14:46 Uhr
Das WP-Framework funktioniert nicht mit internen Rewrite-Regeln in .htaccess. Sie müssen die WP-Rewrite-API in Ihrer Theme-PHP-Datei verwenden.
– anubhava
21. Oktober 2021 um 14:55 Uhr
@CBroe Ich habe diese WP-Funktion verwendet
add_rewrite_rule
vorher, aber ich bemerkte, was es schließlich tut, ist, dass es das umschreibt.htaccess
Datei 🙂 Auch diese Funktionadd_rewrite_rule
scheint die gleiche Einschränkung zu haben: Die Ersatzzeichenfolge muss ein Dateipfad sein (zanything.php?query=foo
) und keine andere URL. Die Frage ist: Wie hat WP Zugriff auf die ursprünglich angeforderte URL?– Basj
21. Oktober 2021 um 16:56 Uhr
“Wie hat WP Zugriff auf die ursprünglich angeforderte URL?” – Vermutlich durch das PHP-Superglobal
$_SERVER['REQUEST_URI']
. “Ich habe es mit dem RewriteRule-Flag versucht[PT]
was funktionieren sollte” – Das gilt nur, wenn es in a verwendet wird Server Kontext. Im.htaccess
PT
ist im Wesentlichen das Standardverhalten. Übrigens im.htaccess
wird die subs-Zeichenfolge als URL-Pfad angesehen, nicht als Dateipfad (insbesondere daRewriteBase
ist definiert)..– Herr weiß
21. Oktober 2021 um 18:07 Uhr