ModRewrite und CMS
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aussehen
beliebig erweitern
besucher
code
domain
download
entsprechenden items
form
frage
gestalten
index
merkmal
projekt
setzen
stichwort
strang
syntax
url
verarbeitet obiges beispiel
verzeichnis
-
Moin,
aktuell code ich an einem neuen Projekt rum und will dort ModRewrite mit einfließen lassen. Mein Problem, ich verstehe das alles irgendwie nicht wirklich. Die Lösung dazu hoffe ich durch Euch zu bekommen.
Mit $_GET['section'] (www.url.de/index.php?section=blabla) werden die Inhalte aufgerufen und ggf. durch andere $_GET Variablen weiter verfeiner (www.url.de/index.php?section=download&item=123). Nun will ich via ModRewrite das ganze ein wenig Suchmaschienen freundlicher machen, habe aber keine Idee wie ich das angehen soll. Ich bekomme es mal grade hin, via .htaccess Datei, die Rechte richtig zu setzen und so weiter. Mit ModRewrite hat das aber alles nicht so wirklich was zu tun.
Nun meine Frage(n): Wie bekomme ich es hin, das aus "www.url.de/index.php?section=downloads" "www.url.de/downloads" wird ohne das versucht wir ein entsprechendes Verzeichniss zu finden (was ganz nebenbei auch existiert, aber für einen Besucher nich zugänglich ist)?
Dazu kommt noch, das auch $_GET['item'] umbenannt werden müsste und zwar in den Namen des entsprechenden Items (liegt in der Datenbank). Sprich "www.url.de/index.php?section&item=123" zu "www.url.de/downloads/tolles-zipfile"?
Danke schon mal für Eure Hilfe und ich hoffe dass das Ganze überhaupt so funktionieren kann wie ich mir dass gedacht habe ;) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
strange schrieb:
Nun meine Frage(n): Wie bekomme ich es hin, das aus "www.url.de/index.php?section=downloads" "www.url.de/downloads" wird ohne das versucht wir ein entsprechendes Verzeichniss zu finden (was ganz nebenbei auch existiert, aber für einen Besucher nich zugänglich ist)?
Wenn es ein Verzeichnis gleichen Namens gibt, ob zugänglich oder nicht ist egal, wird es unnötig kompliziert.
Von daher würde ich die Syntax der freundlichen URLs dann eventuell anders gestalten.
Zwecks Unterscheidung ließe sich in die Suma-URLS ein zusätzliches Merkmal einbauen.
domain.tld/downloads = Link zum Verzeichnis downloads
domain.tld/Merkmal/downloads oder domain.tld/Merkmal-downloads = Link zum Skript mit Parameter Downloads.
Was brauchen wir?
1. ein Skript, das Suma-freundliche URLS (z.B.: Domain.tld/Merkmal/wert1) ausgibt. Dabei ist es einfach, das Skript so zu gestalten, daß es eine URL der Form
echo "<a href='http://domain.tld/Merkmal/" . $wert1-variable . "'>Linktext</a>";
statt
echo "<a href='http://domain.tld/index.php?param=" . $wert1-variable . "'>Linktext</a>";
generiert
2. eine .htaccess, die die Url wieder in eine, für php verständlicher Form umbaut ( -> Domain.tld/index.php?param1=wert1)
3. eine Index.php, oder ein anderes php-Skript, das diese URL verarbeitet.. ;)
obiges Beispiel würde dann mindestens eine .htaccess wie folgt voraussetzen:
RewriteEngine On RewriteRule ^Merkmal/([^/_]+)$ /index.php?param1=$1 [L,NC]
Je nach Konfiguration des Apache kann die Syntax des Rewriting in der .htaccess (Stichwort: RewriteCond) auch anders aussehen.
-
Super, vielen Dank, das bringt mich ne ganze Ecke weiter. Nur noch ne Frage... wie gehe ich vor wenn ich unterschiedliche Variablen habe, bzw. mehrere in einer URL: http://domain.tld/index.php?var1=foo&var2=bar
-
Auch kein großes Ding.
Sieht dann etwa so aus:
alte Version
echo "<a href='http://domain.tld/index.php?param1=" . $wert1-variable ."&param2=" . $wert2-variable . "'>Linktext</a>";
neue Version
echo "<a href='http://domain.tld/" . $wert1-variable . "/" . $wert2-variable . ".html'>Linktext</a>";
.htaccess:
RewriteEngine On RewriteRule ^([^/_]+)/([^/_]+)\.html$ /index.php?param1=$1¶m2=$2 [L,NC]
Das System läßt sich beliebig erweitern, kostet aber Serverleistung, weil das Regelwerk bei jedem Seitenaufruf geprüft wird. -
Also wenn ich das richtig verstanden habe, müsste meine .htaccess wie folgt aussehen:
RewriteEngine On RewriteRule ^Merkmal/([^/_]+)$ /index.php?param1=$1 [L,NC] RewriteRule ^Merkmal/([^/_]+)/([^/_]+)\.html$ /index.php?param1=$1¶m2=$2 [L,NC]
Wie die Links dann Formatiert werden ist klar. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage