mod_rewrite - Suma Optimierung
Matze
- webserver
0 Downlord0 Matze0 Ingo Turski0 Matze0 Malcolm Beck´s0 Matze
0 Ingo Turski0 Matze
Hallo!
Ich arbeite gerade an einer Seite, deren Links ich mit mod_rewrite 'verschönern' möchte.
Also anstatt
http://www.domain.tld/index.php?cat=foo
soll
http://www.domain.tld/foo
oder
http://www.domain.tld/foo/
^
werden.
Welche Variante wäre denn dabei zu bevorzugen?
Und kann ich weitere Parameter per Get anhängen?
Wie müsste das dann aussehen, (...)foo/?cat2=bar
oder (...)foo?cat2=bar ?
Synthaktisch wär ja das Fragezeichen falsch, schließlich wird das schon von mod_rewrite eingefügt. Andererseits wäre (...)foo&cat2=bar logisch gesehen falsch, weil in der Adressleiste etwas vermeintlich 'falsches' steht.
Ihr seht, ich habe tatsächlich gerade erst angefangen mich mit sowas zu beschäftigen. Ich durchwühl auch fleissig das Archiv und Google, nur leider bin ich nicht so fit mit den RegExp und der .htaccess.
Mein Versuch sieht bis jetzt so aus:
RewriteRule ^(.*)/(.*)$ index.php?cat=$2
Jetzt stimmen aber die Pfadangaben zu den Bildern und Scripten nicht mehr.
Erscheint mir auch logisch, dass der Browser jetzt denkt er wäre eine Verzeichnissebene tiefer.
Könnte mir jemand dabei helfen? Ich beschäftige mich damit das erste mal und fühl mich zum DAU zurück versetzt ;)
Ich bin auch für Linktipps dankbar wenn jemand ein schönes Tutorial o.ä. in seiner Linkliste hat, welches ich nicht auch selbst auf der ersten Google-Treffer-Seite finde ;)
Für Rückfragen kann ich mich dann immernoch hier wieder melden.
Danke und Grüße,
Matze
Jetzt stimmen aber die Pfadangaben zu den Bildern und Scripten nicht mehr.
Erscheint mir auch logisch, dass der Browser jetzt denkt er wäre eine Verzeichnissebene tiefer.
Stimmt - der Browser verhält sich richtig. Deshalb solltest du allen Bildern absolute Pfade vergeben.
Gruß,
EL
Hallo!
Das mit den Pfaden hatte ich ja bereits gemerkt und mittlerweile geändert.
Was ich nicht hinkrieg, ist jetzt eine RewriteRule zu schreiben, die alle Unterordner von domain.tld einschließt.
Schreibe ich rewriteRule ^(.*)$ index.php?cat=$1 läuft das ins Leere.
Schreibe ich rewriteRule ^(.*)/$ index.php?cat=$1 muss ich die Links auch auf
domain.tld/foo/
^
statt domain.tld/foo verlinken.
Ich versteh nicht, warum ^(.*)$ nicht "funzt" sondern ich auf die index.php weiter geleitet werde.
Ich bin mir auch nicht schlüssig was "besser" sein soll, domain.tld/foo oder domain.tld/foo/ oder ob es egal ist und egal was - warum ist das dann so? ;)
Danke und Grüße, Matze
Hi,
Ich bin mir auch nicht schlüssig was "besser" sein soll, domain.tld/foo oder domain.tld/foo/ oder ob es egal ist und egal was - warum ist das dann so? ;)
es ist in der Tat egal und Du kannst selbst ?foo weiter verwenden. Nur sollte "foo" das Keyword sein und keine Weiteren Parameter kommen.
freundliche Grüße
Ingo
Hallo und guten Abend Ingo!
Ich bin mir auch nicht schlüssig was "besser" sein soll, domain.tld/foo oder domain.tld/foo/ oder ob es egal ist und egal was - warum ist das dann so? ;)
es ist in der Tat egal und Du kannst selbst ?foo weiter verwenden. Nur sollte "foo" das Keyword sein und keine Weiteren Parameter kommen.
Nee nee, "foo" wäre ja der Wert. Also beim Aufruf von http://www.domain.tld/foo/ soll http://www.domain.tld/index.php?cat=foo aufgerufen werden.
Ich denk mal auf deiner HP ist es auch so gelöst oder du verwendest "echte" Verzeichnisse.
Aber wenn es egal ist, ist ja alles halb so wild und ich bin schon einen ganzen Schritt weiter.
Danke und Grüße,
Matze
hi,
Aber wenn es egal ist, ist ja alles halb so wild und ich bin schon einen ganzen Schritt weiter.
Vor noch knappen 14 Stunden kämpfte ich mit dem selben Mist! Also nicht Exakt, Ziel war .htaccess im xampp zu nutzen.
http://www.modrewrite.de/foren/ftopic82.html
Es hat zumindest ein wenig geholfen :)
Kind regards
Hi Malcolm!
Vor noch knappen 14 Stunden kämpfte ich mit dem selben Mist! Also nicht Exakt, Ziel war .htaccess im xampp zu nutzen.
Och naja die ein oder andere Einstellung in der httpd.conf ;)
http://www.modrewrite.de/foren/ftopic82.html
Es hat zumindest ein wenig geholfen :)
Mein Problem ist in der Tat eher die RegExp.
Jetzt bin ich mir aber glaube einig, dass ich es so lösen werden:
Die Menüpunkte werden alle über einen entsprechenden Ordner aufgerufen
(mod_rewrite macht aus "domain.tld/foo/"->"domain.tld/index.php?cat=foo"),
'Unterpunkte' oder Variablen die mitgeschickt werden müssen, werden dann so angegeben,
dass mod_rewrite aus "domain.tld/foo/bar-hund-example.php" -> "domain.tld/index.php?cat=foo&var1=bar&var2=hund&var3=example" macht.
Sobald ich soweit bin, muss ich die RegExp noch für Subdomains anpassen...
Naja kommt Zeit, kommt Rat und im Moment funktioniert erstmal alles wie es soll :)
Grüße, Matze
Hi,
es ist in der Tat egal und Du kannst selbst ?foo weiter verwenden. Nur sollte "foo" das Keyword sein und keine Weiteren Parameter kommen.
Nee nee, "foo" wäre ja der Wert. Also beim Aufruf von http://www.domain.tld/foo/ soll http://www.domain.tld/index.php?cat=foo aufgerufen werden.
Du verstehst nicht... statt http://www.domain.tld/foo/ über mod_rewrite zu ermöglichen ist http://www.domain.tld/?foo genauso gut - vorausgesetzt wie gesagt, dass "foo" dem Keyword entspricht.
Auf index.php kannst Du in der URL genauso verzichten wie auf cat= - beides hat ja keine relevante Aussage in Bezug auf den Inhalt bzw. die Keywords. Zur Verdeutlichung: http://www.google.de/search?hl=de&q=em+latein+anfahrt
Ich denk mal auf deiner HP ist es auch so gelöst oder du verwendest "echte" Verzeichnisse.
Es sind echte Verzeichnisse.
freundliche Grüße
Ingo
Hallo Ingo!
Nee nee, "foo" wäre ja der Wert. Also beim Aufruf von http://www.domain.tld/foo/ soll http://www.domain.tld/index.php?cat=foo aufgerufen werden.
Du verstehst nicht... statt http://www.domain.tld/foo/ über mod_rewrite zu ermöglichen ist http://www.domain.tld/?foo genauso gut - vorausgesetzt wie gesagt, dass "foo" dem Keyword entspricht.
Ah, jetzt versteh ich. Es geht darum unnötiges oder kryptisches wegzulassen und stattdessen nur den relevanten Wert anzugeben - getrennt durch ein beliebiges Zeichen.
Die Werte werden dann per mod_rewrite den jeweiligen Parametern übergeben.
Auf index.php kannst Du in der URL genauso verzichten wie auf cat=(..)
Naja, bei der Weiterleitung RewriteRule ^(.*)/$ index.php?cat=$1 ist index.php schon sinnvoll oder? Oder meinst du ich soll direkt RewriteRule ^(.*)/$ ?kat=$1 schreiben?
Oder gehörte das noch zu dem oberen Absatz?
Ich denk mal auf deiner HP ist es auch so gelöst oder du verwendest "echte" Verzeichnisse.
Es sind echte Verzeichnisse.
Solang es nicht zu viele werden und es sich nicht um unbekannte(dynamische) handelt sicher zu bevorzugen.
Danke und Grüße, Matze
Hi,
Du verstehst nicht... statt http://www.domain.tld/foo/ über mod_rewrite zu ermöglichen ist http://www.domain.tld/?foo genauso gut - vorausgesetzt wie gesagt, dass "foo" dem Keyword entspricht.
Ah, jetzt versteh ich. Es geht darum unnötiges oder kryptisches wegzulassen und stattdessen nur den relevanten Wert anzugeben - getrennt durch ein beliebiges Zeichen.
Die Werte werden dann per mod_rewrite den jeweiligen Parametern übergeben.
offenbar verstehst Du das doch erst nur teilweise. Du brauchst mod_rewrite gar nicht!
Wenn Du alles über die index.php steuerst, kannst Du dies dank DirectoryIndex schon mal weglassen. *Einen* Parameter kannst Du ohne Schlüssel im Query-String übergeben, wenn Du also ein Seite über Ferienwohnungen SEO-wirksam verlinken willst, dann über "?Ferienwohnungen".
Anstatt nun über mod_rewrite die Anfrage umzuleiten, kannst Du Deinem PHP-Script auch beibringen, diesen Query-String zu verarbeiten.
freundliche Grüße
Ingo