Zur Navigation

Verschiedene Urltypen [3]

Möglichkeiten, via $_GET Daten zu "bekommen"

21 Tilman

Für die Verlinkung benutze ich folgenden Code:
$titlel = urlencode($title);
echo "<a href=\"http://example.com/books/$titlel\" title=\"$title\"><img src=\"http://example.com/books/img/cover/$imgurl\" class=\"mbi\"></a>";

Die fertige Url (Beispiel):
http://example.com/buecher/Eragon+1+-+Das+Verm%E4chtnis+der+Drachenreiter

Ansonsten habe ich nichts verändert.

07.01.2009 16:26 | geändert: 07.01.2009 19:58

22 Jörg

In welchem Verzeichnis befindet sich die .htaccess, die die URLs umschreibt - in "/buecher" oder in "/"? ist dort die Ausführung von Modrewrite erlaubt? Gibt es dort noch andere Rules oder Direktiven, die eine 403 erzeugen könnten?

07.01.2009 16:57 | geändert: 07.01.2009 16:57

23 Tilman

Die .htaccess-Datei befindet sich im Hauptverzeichnis.
Ja, Modrewrite ist erlaubt. In der .htaccess-Datei steht zu 403:
ErrorDocument 403 /extra/error/403.php
Options -Indexes

Ich habe herausgefunden, dass 403 nur ausgegeben wird, wenn im Titel ein Umlaut enthalten ist (auch encodiert):
.../buecher/Eragon+1+-+Das+Verm%E4chtnis+der+Drachenreiter

Urls wie diese werden aber erfolgreich angezeigt:
.../buecher/Eragon+3++-+Die+Weisheit+des+Feuers

07.01.2009 20:02

24 Jörg

Den Fehler kann ich nicht nachvollziehen. Wie schaut denn die komplette .htaccess aus?

07.01.2009 20:53

25 Tilman

.htaccess:
RewriteEngine on
RewriteBase /

RewriteRule ^buecher/([^/^\.]+)$ buecher/showbook_.html?titel=$1

ErrorDocument 404 /extra/error/404.php
ErrorDocument 403 /extra/error/403.php

Options -Indexes

Ich habe Mal folgendes ausprobiert:
$TITEL = $_GET['titel'];
$TITEL = str_replace("Ä", "Ä", $TITEL);
$TITEL = str_replace("Ãœ", "Ü", $TITEL);
$TITEL = str_replace("Ö", "Ö", $TITEL);
$TITEL = str_replace("ä", "ä", $TITEL);
$TITEL = str_replace("ü", "ü", $TITEL);
$TITEL = str_replace("ö", "ö", $TITEL);
Diesen Code habe ich in die Datei "showbook_.html" eingefügt. Wenn die Titel nicht encodiert sind, werden Bücher mit Umlauten in der Datenbank gefunden. Diese Methode würde also auch theoretisch funktionieren. Wäre die denn auch sinnvoll?

08.01.2009 15:05

26 Jörg

Ich habe deine .htaccess gerade nochmal getestet - kann die 403 mit der URL "/buecher/Eragon+1+-+Das+Verm%E4chtnis+der+Drachenreiter" aber nicht reproduzieren. Hast du Zugriff auf die error.log Datei des Apache? dort findet sich vielleicht noch ein Hinweis, wie es zu der 403 kommt.

09.01.2009 00:51

27 Tilman

Bsp:
[Fri Jan 09 16:15:38 2009] [error] [client 127.0.0.1] (22)Invalid argument: Cannot map GET /buecher/Eragon+1+-+Das+Verm%E4chtnis+der+Drachenreiter HTTP/1.1 to file, referer: http://example.com/buecher/Eragon+3++-+Die+Weisheit+des+Feuers

09.01.2009 16:17

29 Tilman

Hallo Jörg.

Wie müsste der Code denn lauten, wenn die Url
example.com/buecher/Titel.html
auf
example.com/buecher/showbooks.html?titel=Titel
"umgeleitet" werden soll.

11.01.2009 17:34

30 Jörg

Das sollte so gehen:

RewriteRule ^buecher/([^/^\.]+)\.html$ buecher/showbooks.html?titel=$1

12.01.2009 09:54