Zur Navigation

Frage zur Weiterleitung in der htaccess

1 WhiteWay

Ich leite meine Seite
www.meineSeite.de/de/seite/searchb.php?var=abcd um auf
www.meineSeite.de/buch/abcd

Das mache ich mit
RewriteCond %{HTTP_HOST} ^www\.meineSeite\.de$
RewriteCond %{REQUEST_URI} !\.jpg
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/?buch/(.+)$ de/seite/searchb.php?var=$1 [L]

Das funktioniert. Aber die Seite lässt sich nun mit beiden Varianten aufrufen.
Ich möchte aber, dass nur die Variante www.meineSeite.de/buch/abcd möglich ist.
Also eine Umleitung, für www.meineSeite.de/de/seite/searchb.php?var=abcd auf www.meineSeite.de/buch/abcd.
Es soll letztere Zeil im Browser angezeigt werden.

Kannst Du da bitte helfen?

19.06.2020 14:29

2 Jörg Kruse

Hier muss man aufpassen, dass man keine Endloweiterleitung auslöst, siehe zweite Hälfte dieses Howtos:

https://jkip.de/howtos/endlos-weiterleitung

Ganz unten findet sich auch ein Lösungsansatz, welchen du auf dein Beispiel übertragen kannst

19.06.2020 14:58 | geändert: 19.06.2020 15:00

3 WhiteWay

Danke für die schnelle Antwort.

Mir ist nur eines noch nicht klar:
Muss ich die Einträge zusätzlich zu meinen machen?
Wenn ja, welcher Eintrag sollte dann zuerst erfolgen, meiner oder der unten aus dem Link?

20.06.2020 06:58

4 WhiteWay

Hat sich erledigt. Es klappt. Natürlich nicht zusätzlich - ist noch etwas früh ;-)

20.06.2020 07:15

... 3 Monate später ...

5 WhiteWay

Habe jetzt zusätzlich zu obigem Code noch eine Paginierung eingebaut. An der betreffenden URL hängt jetzt noch ein "&seite=x" dran. Um die Änderung richtig durchzuführen, fehlt mir noch das Verständnis. Hilfst Du mir bitte noch einmal?

23.09.2020 17:17

6 Jörg Kruse

Wie soll denn die URL von Seite 2 aufgebaut sein, so (?):

https://example.com/buch/abcd/2

Und wie sieht der Code in der .htaccess Datei aktuell genau aus?

23.09.2020 18:36

7 WhiteWay

Ich dachte eher an https://www.example.com/buch&seite=2

Bisher sieht es so aus:
RewriteCond %{HTTP_HOST} ^www\.domain\.de$
RewriteCond %{REQUEST_URI} !\.jpg
RewriteCond %{REQUEST_URI} !\.png
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} /buch/
RewriteRule ^/?buch/(.+)$ de/seite/searchb.php?var=$1 [L,QSA]

24.09.2020 08:57

8 Jörg Kruse

Du meinst vermutlich:

https://www.example.com/buch?seite=2

Mit einem "&" werden die Parameter voneinander getrennt, eingeleitet wird ein Query String durch ein "?"

Was ist hierbei das Problem? möchtest du eine statische URL https://www.example.com/buch/2 erzeugen und mod_rewrite soll diese nicht auf https://www.example.com/de/seite/searchb.php?var=2 rewriten, sondern auf https://www.example.com/buch?seite=2 ?

Dazu kannst du einen Regelsatz vorschalten, der bei einem Ziffern-Muster anschlägt:

RewriteCond %{HTTP_HOST} ^www\.domain\.de$ 
# ...
RewriteRule ^/?buch/([0-9]+)$ buch?seite=$1 [L,QSA]

... und danach der Regelsatz mit dem allgemeineren Muster

24.09.2020 11:03 | geändert: 24.09.2020 11:05

9 WhiteWay

Nein.
Die eigentliche Seite, die umgeschrieben werden soll, ist:
https://www.domain.de/de/seiten/searchb.php?var=suchbegriff&seite=seitenzahl

Der Teil "/de/seiten/" soll wegfallen und statt dessen das Verzeichnis buch/Suchbegriff gefolgt von "&seite=irgendEineZahl"

Und das soll abgerufen werden und auch umgeleitet werden auf
https://www.domain.de/buch/suchbegriff&seite=seitenzahl

Das sind 2 Parameter: suchbegriff (welches Buch) und seitenzahl (welche Seite)

Wenn ich das so mache:
RewriteRule ^/?buch/([^/]+)/([^/]+)/?$ de/seiten/searchb.php?var=$1&kat=$2 [L,QSA]

dann ergibt sich
hppts://www.domain.de/buch/suchbegriff/seitenzahl.

Ich möchte aber
https://www.domain.de/buch/suchbegriff?seite=seitenzahl

24.09.2020 12:22

10 WhiteWay

Habe mich vertippt. So wäre es richtig gewesen:
RewriteRule ^/?buch/([^/]+)/([^/]+)/?$ de/seiten/searchb.php?var=$1&seite=$2 [L,QSA]

24.09.2020 12:49