Zur Navigation

Umleitung

1 Roberto

Hallo

Bei meiner alten Website habe ich virtuelle Webadressen so bearbeitet:

RewriteRule ^werkzeug([0-9]+)\.php tools2.php?nr=$1

Z.B. wurde die Webadresse werkzeug1022.php angezeigt und durch die Datei tools2.php interpretiert. Das hat bestens funktioniert.

Jetzt habe ich auf WordPress umgesattelt und meine Datenbank integriert.
Die oben erwähnte RewriteRule funzt nicht mehr.
Ich habs dann so probiert:

RewriteRule ^werkzeug([0-9])   tools2.php?nr=$1

Oder

RewriteRule ^werkzeug([0-9])   https://meineDomain/wp-content/theme/meinchildtheme/tools2.php?nr=$1

Sowie ähnliche Varianten.

Die URL werkzeug1022 wird angezeigt, ich bekomme jedoch die Meldung «Die gesuchte Seite existiert leider nicht.»

Woran könnte das liegen?

Gruss
Walter

05.06.2021 09:32

2 Jörg Kruse

Die Reihenfolge ist wichtig: zuerst diese alte Umleitung und dann der WordPress-Code. Außerdem würde ich noch ein L(ast)-Flag hinzufügen, damit bei einem Match keine folgenden Rules mehr angewandt werden:

RewriteRule ^werkzeug([0-9]+)\.php tools2.php?nr=$1 [L]

05.06.2021 11:50

3 Walter

Danke, bin einen Schritt weiter!

Ich habe

RewriteRule ^werkzeug([0-9]+) tools2.php?nr=$1 [L]

ohne \.php verwendet, da ich jetzt auch ohne Endungen arbeite.

Es funktioniert zu 50%. Der Datensatz erscheint, aber die URL lautet
/tools2/?nr=1299

anstatt

werkzeug1299

07.06.2021 16:56

4 Jörg Kruse

Gibt es noch irgendwelche weiteren Um- oder Weiterleitungen in der .htaccess Datei? ggf. mal den gesamten Inhalt posten..

07.06.2021 21:07 | geändert: 07.06.2021 21:09

5 Walter

OK.

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)\.php$ https://meindedomain.com/$1/ [L,R=301]
RewriteRule ^werkzeug([0-9]+) tools2.php?nr=$1 [L]

# BEGIN WordPress
# Die Anweisungen (Zeilen) zwischen „BEGIN WordPress“ und „END WordPress“ sind
# dynamisch generiert und sollten nur über WordPress-Filter geändert werden.
# Alle Änderungen an den Anweisungen zwischen diesen Markierungen werden überschrieben.

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

# PHP ohne Erweiterung
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^([^.]+)$ $1.php [NC,L]

08.06.2021 09:07

6 Jörg Kruse

Anscheinend schlägt dieser Regelsatz bei einem zweiten Durchlauf zu:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?(.+)\.php$ https://meindedomain.com/$1/ [L,R=301]

... was merkwürdig ist, da die Umleitung gemäß RewriteCond nicht auf existierende Dateien angewandt werden sollte. tools2.php existert ja als Datei? befindet sich diese nicht im Wurzelverzeichnis?

Bau mal testweise eine zweite Abbruchbedingung ein:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !tools2\.php$
RewriteRule ^/?(.+)\.php$ https://meindedomain.com/$1/ [L,R=301]

08.06.2021 09:37

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]