Frage zu ModRewrite
Frage: Frage zu ModRewrite(13 Antworten)
Hallo. Ich habe eine Frage bezüglich Mod Rewrite. Ich möchte dass meine Url so aussieht: /vorname_name_$id.html Die id soll dann weitergeleitet werden an detail.php?id=$id. Auf www.modrewrite.de habe ich schon geschaut, aber dort wird nicht erklärt was man machen muss wenn vorname_name variabel ist. so funktioniert es: RewriteRule ^seite_[0-9]+).html$ /detail.php?id=$1 aber hier ist wie gesagt die seite nicht variabel. Hat jemand eine Ahnung wie ich das Problem lösen kann? Die id in der Url sieht ja nicht sehr schön aus. Gibt es vielleicht einen anderen weg, wie ich sie besser gestalten kann? (ich gehe davon aus dass es später 2 Leute mit selbem namen gibt, und auch solche ohne vornamen oder nachnamen) Vielen Dank |
Frage von IamOnYourSide (ehem. Mitglied) | am 18.12.2007 - 23:09 |
Antwort von GAST | 18.12.2007 - 23:37 |
Achso, du setzt hier also Wert auf SEO. http://www.ranking-konzept.de/mod_rewrite.html http://www.onlinebizz.de/suchmaschinenoptimierung-anleitung.html Die beiden werden dir helfen! =) |
Antwort von GAST | 18.12.2007 - 23:22 |
Ich hab das jetzt so verstanden, dass du eine Datei hast - z. B. peter_bauer_41.html - und diese 41 (= $id) soll weitergeleitet werden an die detail.php?id=$id! Frage: Wieso soll da eine Weiterleitung stattfinden? Mache den Link doch direkt so, dass du auf die detail.php weitergeführt wirst, ohne diese HTML-Datei dazwischen! Wozu brauchst du diesen Zwischenschritt? |
Antwort von IamOnYourSide (ehem. Mitglied) | 18.12.2007 - 23:29 |
Ja, genau so möchte ich es. Also du meinst dass ich direkt auf detail.php?=41 verlinken soll? Aber dann steht das doch genau so in der URL? Und das möchte ich vermeiden. Denn Suchmaschinen haben ? in der URL nicht gern, deshalb möchte ich sie verändern. Es sieht auch schöner aus wenn dort der name steht und nicht nur die id. |
Antwort von IamOnYourSide (ehem. Mitglied) | 18.12.2007 - 23:31 |
Eigentlich ist es ja gar kein Zwischenschritt, da die neue url zwar angezeigt wird, aber im Hintergrund trotzdem noch die alte steht. |
Antwort von GAST | 18.12.2007 - 23:37 |
Achso, du setzt hier also Wert auf SEO. http://www.ranking-konzept.de/mod_rewrite.html http://www.onlinebizz.de/suchmaschinenoptimierung-anleitung.html Die beiden werden dir helfen! =) |
Antwort von IamOnYourSide (ehem. Mitglied) | 18.12.2007 - 23:50 |
Vielen Dank! Auf den ersten Blick habe ich zwar nichts gesehen das mir direkt hilft, aber es ist sicherlich eine grosse Hilfe. Ich hab es jetzt vorläufig mit 2 _ gelöst. RewriteRule ^.+__([0-9]+).html$ /charakter_detail.php?id=$1 aber es müsste doch irgendeinen befehl für die letzten zahlen geben... aber egal. Jetzt noch eine andere Frage zu einem anderen Thema: Wie kann ich in PHP Wörter durch Links ersetzen lassen? Für normale Texte geht das vermutlich nicht, aber für solche die ich aus einer DB hole sollte es doch mit einem str_replace oder ähnlichem gehen? Soweit wäre es ja noch ganz simpel, aber da ich mich erst seit 1nem Monat mit PHP beschäftige bräuchte ich beim folgenden Hilfe: Ich möchte dass in einem Text alle Namen durch Links ersetzt werden. Die Namen und Links stehen in einer anderen Tabelle. Wie kann ich das jetzt automatisieren? also irgendwie eine foreach oder while schlaufe, der mit jedem Eintrag der Tabelle den ganzen Text durchsucht und die gefundenen Wörter ersetzt. Ich hoffe ihr wisst was ich meine ^^. Theoretisch sollte das ja recht einfach sein, aber wie gesagt bin ich noch in der Lernphase. |
Antwort von GAST | 18.12.2007 - 23:54 |
Dein Problem: Du möchtest jeden Namen in einem Text (Namen aus Datenbank) verlinken! Das Script soll die Namen erkennen können! Frage: Wenn du einen Text hast, wie willst du da die Namen aus einer anderen Datenbank einfügen? Oder sind die Namen bereits im Text drin und das Script soll die Namen erkennen? Ist das wirklich ein TEXT, wie z. B. "Lorem ipsum" oder ist das eine Tabelle/ Aufzählung, wie z. B. ein Forum oder ein Gästebuch? |
Antwort von IamOnYourSide (ehem. Mitglied) | 18.12.2007 - 23:59 |
Der Text ist schon in der Datenbank, genau wie die Namen. Ich hole den Text aus der DB und das sieht dann so aus: Peter ging die Strasse runter und begegnete Franz. Jetzt soll das script Peter und Franz (die in der anderen Tabelle stehen) durch links ersetzen. Also: Peter(link) ging die Strasse runter und begegnete Franz(link). |
Antwort von GAST | 19.12.2007 - 00:11 |
Alles klar. Also mit str_replace geht das! Du nimmst dir eine While-Schleife und sagst, dass sie solange den str_replace-Befehl ausführen soll, bis alle Namen abgearbeitet sind! Beispiel: while ($datenbank_namen_ausgabe->vornamen = true && $datenbank_namen_ausgabe->nachname = true) { $vorname = $datenbank_namen_ausgabe->vornamen; $nachname = $datenbank_namen_ausgabe->nachnamen; $link = "<a href="$vorname_$nachname.html">$vorname</a>"; $umwandlung = str_replace($vorname, $link, $text); } |
Antwort von GAST | 19.12.2007 - 00:13 |
Was mir hier aber auffällt ist, dass es auch sein kann, dass du z. B. 2 Peters hast. Dann musst du noch die ID mit einfließen lassen und somit wäre dein Plan vom str_replace sinnlos! Denn str_replace kann nur Strings ersetzen. Es kann nicht differenzieren, welcher Peter jetzt geschrieben hat! Das musst du anders lösen! |
Antwort von IamOnYourSide (ehem. Mitglied) | 19.12.2007 - 00:23 |
Da hast du recht. Ich muss noch schauen wie ich das mache, aber danke mal für eine Hilfe. ich werde das Script mal ausprobieren, vielleicht fällt mir ja dann etwas ein ^^. |
Antwort von GAST | 19.12.2007 - 00:32 |
Eine Idee wäre den Text so zu gestalten, dass hinter jeden Namen eine fünfstellige Zahl kommt. Die Zahl ist dann die User-ID. Wenn du denn Text dann mit dem Script bearbeitest, wird diese Zahl vom Script aufgenommen und der davor stehende Name wird zu einem Link, wie ich`s dir schon gezeigt habe! Der Link muss dann aber auch entsprechend die ID in sich enthalten! Hier ein kleiner Denkanstoß zu den ID`s: http://www.php-dummies.de/script/Tutorials/Erste_Schritte/Strings.html Wichtig ist, dass alle Werte 5 Ziffern haben, also z. B.: 00001 00255 01856 25622 Und keine nur "25" oder "1" lautet, weil du mit der Funktion substr, die in dem Link enthalten ist, nur eine exakte Anzahl von Zeichen hinter dem Zielobjekt durchsuchen kannst. Wenn du also sagst, dass das Script die nächsten 5 Zeichen nach dem Namen nehmen und verarbeiten soll, dürfen es auch immer nur 5 Zeichen sein - nicht mehr und nicht weniger! Außerdem müssen die ID`s am Ende dann aus dem entgültigen Text herausgeschnitten werden! Ein Beispiel für den Text könnte dann sein: Das ist Peter00015. Er hat Markus54068 vor einigen Wochen der Maria57415 vorgestellt, die er von Martins00004 Party kennt! _________ Ich hab` mir das grade aus den Fingern gesaugt und auch nur eine ungefähre Vorstellung der Lösung, aber probier`s einfach mal! ^^ |
Antwort von IamOnYourSide (ehem. Mitglied) | 19.12.2007 - 00:39 |
Ich werd mich mal reinlesen, danke. |
Antwort von GAST | 25.12.2007 - 09:57 |
@ Roman250 es müssen nicht unbedingt immer gleichviele stellen sein mit Regulären Ausdrücken kann man das dynamisch regeln |