Webkatalog Script bearbeiten.. wer weiss Hilfe?

Wie wir alle wissen (sollten) ändert mod_rewrite keine Links im Script. Damit auch die Links auf Deiner Page auf die neuen "Rewrited URLs" zeigen bedarf es der Anpassung im Code. Fragen und Probleme rund um's Coding werden hier diskutiert.

Moderator: Super-Mod

schnellsuche

Beitragvon entekross » 18.12.2005 18:06

hier sieht der ganze Spaß so aus...

in der htaccess hab ich jetzt das hier gemacht:
RewriteRule ^schnellsuche-(.+)-([0-9]+)\.html$ /schnellsuche.php?$1&term=$2 [L] :?:

und in der schnellsuche.php
bei codeurl...
$codeurllseitezahl= "schnellsuche-$term";
vorher so:
$codeurllseitezahl= "schnellsuche.php?$seitennummer&term=$term";
entekross
.
.
 
Beiträge: 23
Registriert: 22.10.2005 02:00
Wohnort: Berlin

Beitragvon Bob » 18.12.2005 18:07

Obwohl ich jetzt noch die schnellsuche umbauen muss ?

Überall da wo eben anch außen ein dynamischer Link entsteht. Nur der Link, welcher sich hinter einer Suche versteckt, den sehen ja die Suchmaschinen nicht. Das ist dann also ehr für den Benutzer.

Grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

besucher..

Beitragvon entekross » 18.12.2005 18:10

ich weiss, aber das Problem ist die schnellsuche nutz auch die funktion.inc wenn mehrere Suchergebnisse das sind.. wegen der codeurlseitezahl.. also mus sich es gezwungenermaßen machen, da der Spaß sonst nicht funktioniert und fehlerseite bei den suchseiten gezeigt wird..
entekross
.
.
 
Beiträge: 23
Registriert: 22.10.2005 02:00
Wohnort: Berlin

Beitragvon Bob » 18.12.2005 18:12

Ja, nur

hier sieht der ganze Spaß so aus...

in der htaccess hab ich jetzt das hier gemacht:
RewriteRule ^schnellsuche-(.+)-([0-9]+)\.html$ /schnellsuche.php?$1&term=$2 [L]

ist ein wenig hinten durcheinander gekommen:

Es sollte wohl ehr
/schnellsuche.php?term=$1&seitennummer=$2
sein, wenn die URL in der Form http://www.pagesuche.de/schnellsuche-auto-7.html aufgebaut ist.
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

japp

Beitragvon entekross » 18.12.2005 18:16

:)

da magst Du recht haben und hast Du auch :))

Ich würde mal sagen, Du hast jetzt endlich Ruhe vor mir ;)

Hoffe hab Dich nicht allzu doll genervt ?

Wünsch Dir nette Feiertage und ich werd mal nachher ein wenig PayPal spenden :roll:
entekross
.
.
 
Beiträge: 23
Registriert: 22.10.2005 02:00
Wohnort: Berlin

Beitragvon greppy » 25.01.2006 10:23

Hallo,

ich bin blutiger Anfänger was mod_rewrite betrifft und ich benutze das gleiche Webkatalog-Script wie entekross.

Hier mal der entsprechende Teil aus der index.php
Code: Alles auswählen
"?rubrik=$date[nummer].html",


hier die htaccess:
Code: Alles auswählen
RewriteEngine on
RewriteRule ^start.php?rubrik=([^.]+)\.html$ /start.php?rubrik=$1 [L]


Wenn ich nun eine Rubrik auswähle, wird diese anhand der Regel nicht korrekt umgesetzt.
Die komplete URL lautet:
http://www.greppy.de/start.php?rubrik=EaEz9nNhZ6

Danke für eure Hilfe
greppy
greppy
.
.
 
Beiträge: 3
Registriert: 25.01.2006 10:06
Wohnort: Hamburg

Beitragvon Bob » 25.01.2006 16:01

:shock: und was ist dann der Sinn deiner Anpassung in start.php?rubrik=EaEz9nNhZ6.html? Damit existiert ja noch immer der QueryString :?
Gerade das wird doch normal versucht zu ändern?
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon greppy » 25.01.2006 16:59

Hallo Caterham,

das ist richtig. Wie schon geschrieben, bin ich noch Anfänger und möchte auch verstehen, was mod_rewrite bewirkt. Deswegen taste ich mich erst einmal step by step heran. Ich hatte bereits versucht anhand eures threads umfangreichere Anpassungen zu machen. Leider haben auch die nicht gefruchtet. Daher wollte ich erst einmal eine einfache Regel erstellen, um zu testen ob diese funktioniert, was sie ja leider nicht getan hat.
Kannst du mir sagen, wo der Fehler liegt?

Vielen Dank
Gruß greppy
greppy
.
.
 
Beiträge: 3
Registriert: 25.01.2006 10:06
Wohnort: Hamburg

Beitragvon greppy » 25.01.2006 20:02

Ich habs nochmal selbst versucht und das Script wie folgt modifiziert:

index.php:
Code: Alles auswählen
"/$date[nummer].html",


htaccess:
Code: Alles auswählen
RewriteRule ^([^+]+)\.html$ /start.php?rubrik=$1 [NC] [L]


Und siehe da - es funktioniert :D
greppy
.
.
 
Beiträge: 3
Registriert: 25.01.2006 10:06
Wohnort: Hamburg

re greepy

Beitragvon entekross » 25.01.2006 21:14

Hallo nochmal ;)

Also ich würde erstmal die Datenbank anpassen, oder eher die Datenbank Abfrage in deinem Fall ?

Weil was soll eine sagen wir mal xyzu765er4.html ?
Dazu müsstest du die Abfrage nicht des Kategorienamens machen sondern der Kategorie ID.. sagen wir mal xyzu765er4 ist in der Datenbank 2.

Abgesehen davon habe ich mich bevor mir der beste Caterham geholfen hat den Webkatalog bereits monatelang modifiziert un dmich reingearbeitet...

weil wenn du die Kategorien jetzt umarbeitest, dann musst Du später alle bisherigen Einträge später neu zuordnen. Also die Ordnung fängt am Anfang an und nicht am Ende.
entekross
.
.
 
Beiträge: 23
Registriert: 22.10.2005 02:00
Wohnort: Berlin

Beitragvon Bob » 26.01.2006 00:49

Deswegen taste ich mich erst einmal step by step heran.
Mit dem QueryString hast du dir das ganze nur erschwert, denn auf diesen kannst du nicht in der RwriteRule (sondern nur über eine Condition) zugreifen, vgl. :faq: Nr. 7.1
Der Request ist bereits soweit fortgeschritten, dass der QueryString lange Zeit vorher abgehangen und in die Variable QUERY_STRING abgelegt wurde. Der Request ist in .htaccess-Dateien sogar bereits so weit, dass nicht mehr auf eine lokale URL /abcd, sondern nur noch auf einen filepath abc zugegriffen werden kann.

^([^+]+)\.html$
Warum schließt du das +-Zeichen aus? Eigentlich sollte vielmehr der Punkt ausgeschlossen werden, um RegEx-Backtracks zu vermeiden. Flags werden normal durch Komma voneinander getrennt:

Code: Alles auswählen
RewriteRule ^([^.]+)\.html$ /start.php?rubrik=$1 [NC,L]


Grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon hanibal the canibal » 20.02.2006 15:55

Hallo Zusammen,

Auch ich habe dasselbe Webkatalog-Script. Diese Diskussion und Hilfestellung habe ich aufmerksam verfolgt und alles so gemacht, wie beschrieben - Allerdings scheint sich irgendwo noch ein verflixter kleiner Fehler bei mir eingeschlichen zu haben...

Beispiel: Rubrik "Immobilien"

Standard: start.php?&rubrik=Immobilien

So wird die Seite auch beim Aufruf der Homepage angezeit.

Die selbe Rubrik lässt sich auch als .html aufrufen, das schaut dann so aus: www.ihre-domain.de/rubrik-immobilien.html

Angezeigt wird mir aber immer die erste Version *grübel*

Meine .htaccess:

RewriteEngine on
RewriteRule ^rubrik-([^.]+)\.html$ /start.php?rubrik=$1 [L]
RewriteRule ^anzeige-(.+)-([0-9]+)\.html$ /anzeige.php?rubrik=$1&treffzahl=$2 [L]
RewriteRule ^anzeige-([^.]+)\.html$ /anzeige.php?rubrik=$1 [L]
RewriteRule ^([0-9]+)-bewerten\.html$ /bewerten.php?nummer=$1 [L]
RewriteRule ^all-rubrik-(.+)-([0-9]+)\.html$ /rubrik_start.php?rubrik=$1&treffzahl=$2 [L]
RewriteRule ^all-rubrik-([^.]+)\.html$ /rubrik_start.php?rubrik=$1 [L]
RewriteRule ^([^-]+)-(.+)-([0-9]+)\.html$ /$1.php?rubrik=$1&treffzahl=$2 [L]
RewriteRule ^([^-]+)-([^.]+)\.html$ /$1.php?rubrik=$1 [L]

Fazit: Dem Grunde nach funktioniert also Darstellung als .html - Aber warum werden mit die Rubriken nicht permanent als .html angezeigt???

Ich würde mich sehr über eine Hilfe freuen - Hoffe das ich es verständlich geschildert habe.

Greetz

hanibal the canibal
hanibal the canibal
.
.
 
Beiträge: 3
Registriert: 20.02.2006 15:45
Wohnort: Deutschland Süd

Beitragvon Bob » 20.02.2006 16:27

Fazit: Dem Grunde nach funktioniert also Darstellung als .html - Aber warum werden mit die Rubriken nicht permanent als .html angezeigt???
Da ist irgendwas im Argen, durch Rewriterules wird kein externer Redirect ausgelöst, die URL sollte sich nach Außen hin sichtbar also nicht ändern.

Wird denn ein 301 oder 302 Redirect gesendet? Das kannst du z.B. über http://web-sniffer.net prüfen. Wird auch ein Redirect gesendet, wenn du kurzzeitig die PHP-Datei mal entfernst? Wenn das nicht der Fall ist, verursacht wohl das Script den Redirect.

grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

Beitragvon hanibal the canibal » 20.02.2006 18:00

Da ist irgendwas im Argen, durch Rewriterules wird kein externer Redirect ausgelöst, die URL sollte sich nach Außen hin sichtbar also nicht ändern.


Hmm...ich glaube ich hab mich umständlich ausgedrückt.

Wenn ich mit der Maus über die Hauptrubriken fahre sieht das so aus:
start.php?&rubrik=Immobilien

Aber nach meinen Rules sollte es eigentlich so aussehen:

www.ihre-domain.de/rubrik-immobilien.html

Wenn ich diese Adresse www.ihre-domain.de/rubrik-immobilien.html direkt in den Browser eingebe, ruft er diese auch auf genau so auf

Bei den Unterkategorien funktioniert das, da steht beim drüberfahren und Aufruf:
/anzeige-Kaufen-Verkaufen.html.

An den Rules in der .htaccess kann das doch nicht mehr liegen, oder? :(
hanibal the canibal
.
.
 
Beiträge: 3
Registriert: 20.02.2006 15:45
Wohnort: Deutschland Süd

Beitragvon Bob » 20.02.2006 18:03

Wenn ich mit der Maus über die Hauptrubriken fahre sieht das so aus:
start.php?&rubrik=Immobilien

Aber nach meinen Rules sollte es eigentlich so aussehen:

www.ihre-domain.de/rubrik-immobilien.html
Nein, deinen Quelltext kann mod_rewrite nicht ändern, das ist alleinige Sache deines Scripts. Dort musst du ansetzen und die Generierung des Quelltextes/der <a href...>-links ändern.

Wenn ich diese Adresse www.ihre-domain.de/rubrik-immobilien.html direkt in den Browser eingebe, ruft er diese auch auf genau so auf
Genau das ist der Tätigkeitsbereich von mod_rewrite, mehr nicht. Deinen Quelltext kann mod_rewrite nicht ändern, dieser wird in der HTTP-Response gesendet, mod_rewrite agiert aber vorher im HTTP-Request.

grüße
Robert
Bob
Moderator
Moderator
 
Beiträge: 5044
Registriert: 01.10.2004 13:10

VorherigeNächste

Zurück zu Programmierung & Scriptanpassung für mod_rewrite

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron