Beitrag von Sebastian (0 Beiträge) am Dienstag, 4.September.2007, 18:05.
rewrite
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 4.September.2007, 18:09.
Re: rewrite
ich denke, vorn ist eine [ zuviel und hinten fehlt eine 1
RewriteRule ^([1-9][0-9]*).html$ /cgi-bin/baseportal.pl?htx=/unifit-daten.de/shop_de/detail_001&Rubrik==Einbaufertige-kats&Name==$1
Antworten
Beitrag von Sebastian (0 Beiträge) am Dienstag, 4.September.2007, 18:41.
Re: Re: rewrite
Antworten
Beitrag von Reiner (306 Beiträge) am Donnerstag, 6.September.2007, 21:54.
Re: rewrite
Hallo Sebastian
kannst Du mir verraten wie bzw wo ich den link umschreiben lassen muss?
Geschieht das im Template selbst.
Wenn ja wie muss dies aussehen?
Kannst Du mir vielleicht auf die Sprünge helfen.
Viele Grüße
Reiner
Antworten
Beitrag von Sander (8133 Beiträge) am Donnerstag, 6.September.2007, 23:09.
Re: Re: rewrite
in einem loop die daten ausgeben, dann kannst du dir den link basteln wie du willst.
in der htaccess wird es dann zurück gebogen
Antworten
Beitrag von Sebastian (0 Beiträge) am Donnerstag, 6.September.2007, 23:48.
Re: Re: rewrite
hallo rüdiger,
ist ganz einfach du erstellst in einem editor eine datei mit dem namen .htaccess und überträgst sie später per ftp in dein root verzeichniss (da wo deine domain eingestellt ist).
Dort steht dann folgendes z.B.
RewriteEngine on # muß sein
Options FollowSymLinks # muß sein
RewriteRule ^Katalysator_(.*).html$ /cgi-bin/baseportal.pl?htx=/unifit-daten.de/shop_de/detail&Name==$1 [NC] [L]
in der letzten zeile passiert dann das eigentliche, die regel. ich kann jetzt ganz einfach als URL eingeben www.uni-fit.de/Katalysator_86314.html. dann wird auf dem server die URL nach Katalysator_ getrennt und die drauf folgenden Zeichen (hier 86314) als $S1 weitergegeben, dann wird die eigentliche domain mit $S1 aufgerufen und schon lande ich auf der shopseite mit dem passenden artikel. sonst müßte ich http://www.uni-fit.de/cgi-bin/baseportal.pl?htx=/unifit-daten.de/shop_de/detail&Name==86314 eingebn, was ja auch nicht so gut für die suchmaschinen ist und für den kunden immer etwas komisch aussieht.
das [NC] bedeutet groß- und kleinschreigung egal, [L] wenn was gefunden wird, abbrechen und nicht weitersuchen. wenn ich nun leerzeichen in der artikelnummer (E 334 oder OX 104) habe, gebe ich einfach ein .../Katalysator_E+334.html, also anstatt ein leerzeichen ein plus (+)
kann man beliebig ausbauen, z.B. RewriteRule ^Katalysator-PEUGEOT_(.*).html$ /cgi-bin/baseportal.pl?htx=/unifit-daten.de/shop_de/detail&Name==$1 [NC] [L]
würde lauten .../Katalysator-PEUGEOT_86314.html
oder eigene endungen definieren: RewriteRule ^(.*).uni-fit$ /cgi-bin/baseportal.pl?htx=/unifit-daten.de/shop_de/detail&Name==$1 [NC] [L]
probiere mal http://uni-fit.de/86314.uni-fit
man kann auch in der .htaccess perl oder php script laufen lassen, geht sehr viel und auch hilfreich, so das besucher automatisch auf verschiedene länder geleitet werden, oder eigene error seiten anzugeben.
sehr hilfreich, http://www.modrewrite.de/
und sonst einfach melden
funktioniert bei miete und lizenz, bei kostenlso weiß ich nicht.
sebastian
Antworten
Beitrag von sascha (539 Beiträge) am Montag, 10.September.2007, 10:50.
Re: Re: Re: rewrite
hallo sebastian,
ist ja cool, was man da machen kann.
das klappt aber nur, wenn ich feste links habe, oder?
bei der blätterfunktion läßt sich das nicht einbauen, dass man
z.b. als link www.domain2.de/artikel&Id.html
und die weiterleitung dann auf das template linkt, z.b.
http://www.domain1.de/cgi-bin/baseportal.pl?htx=/test&Rubi==$Rubi
......
my $newrange=$_range+$_range_length;
my $oldrange=$_range-$_range_length;
$oldrange=0 if $oldrange<0 && $oldrange>-$_range_length;
out "<a href=\"http://www.domain1.de/cgi-bin/baseportal.pl?htx=/test&Rubi==$Rubi&range=$oldrange,$_range_length\">zurück</a>" if $oldrange>=0;
out "<a href=\"http://www.domain1.de/cgi-bin/baseportal.pl?htx=/test&Rubi==$Rubi&range=$newrange,$_range_length\">weiter</a>" if $newrange<$_amount_query;
.....
gruß
sascha
Antworten
Beitrag von sebastian (533 Beiträge) am Montag, 10.September.2007, 13:25.
Re: Re: Re: Re: rewrite
hallo sascha,
. . .das klappt aber nur, wenn ich feste links habe, oder? NEIN, das ist ja gerade der vorteil, das die links nicht fest sein müssen.
für das blätter-script müsste das auch gehen, musst halt zwei $S1 / $S2 mit übergeben. schaue mal hier dazu: http://www.modrewrite.de/foren/search.php?search_keywords=zwei+werte
RewriteRule ^weitere_artikel_(.*)_/?(.*)\.png$ /cgi-bin/baseportal.pl?htx=/test&Rubi==$Rubi&range=$1,$2 [NC] [L]
etwa so, musste mal probieren, nicht getestet. hier werden die beiden ranges verarbeitet, ......weitere_artikel_(.*)_/?(.*) um dann hier weiter verwendet zu werden ....&range=$1,$2
sebastian
Antworten
Beitrag von sascha (539 Beiträge) am Dienstag, 11.September.2007, 14:55.
Re: Re: Re: rewrite
hallo sebastian,
ich versuch mich erstmal an den einfachen dingen - mit problemen.
in der htaccess habe ich:
----------------------------------
RewriteEngine on
Options FollowSymLinks
RewriteRule ^/meldung_(.*).html$ /cgi-bin/baseportal.pl?htx=/meldung&Id==$1 [NC] [L]
----------------------------------
www.domain1.de/meldung_$Id.html wird zu www.domain1.de/meldung_5.html
das klappt auch.
so müßte doch aus www.domain1.de/meldung_5.html der aufruf so werden:
/cgi-bin/baseportal.pl?htx=/meldung&Id==5
ich bekomme aber immer ein error404, daß diese seite nicht existiert!
siehst du meinen fehler?
gruß
sascha
Antworten
Beitrag von sebastian (533 Beiträge) am Dienstag, 11.September.2007, 15:42.
Re: Re: Re: Re: rewrite
hallo sascha,
schaue mal hier: writeRule ^/meldung_(.*).html$ /cgi-bin/baseportal.pl?htx=DEINEDOMAIN.DE/meldung&Id==$1 [NC] [L]
nach dem htx fehlt die Domain, oder ?
sebastian
Antworten
Beitrag von sascha (539 Beiträge) am Dienstag, 11.September.2007, 19:11.
Re: Re: Re: Re: Re: rewrite
nee - nicht bei ner lizenz.
Antworten
Beitrag von sascha (539 Beiträge) am Mittwoch, 12.September.2007, 11:33.
Re: Re: Re: Re: Re: Re: rewrite
hallo,
hab jetzt mit 2 unterschiedlichen angaben bei htaccess 2 unterschiedliche
fehlermeldungen bekommen:
mit stern bekomme ich ne 500-fehlerseite
RewriteRule ^/meldung_(.*).html$ /cgi-bin/baseportal.pl?htx=/meldung&Id==$1 [NC] [L]
mit 0-9 ne 404-fehlerseite
RewriteRule ^/meldung_(0-9).html$ /cgi-bin/baseportal.pl?htx=/meldung&Id==$1 [NC] [L]
Antworten
Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 12.September.2007, 12:58.
Re: Re: Re: Re: Re: Re: Re: rewrite
Mach dir doch mal nen rewrite log
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteLog
oder "probiere" den regex erstmal trocken in einem perl script oder baseportal Template, weil der intepreter kann wesentlich besser deinen code debuggen als ein Forum.
Zwei Sachen fallen mir auf
ein Punkt muss im Suchmuster maskiert werden \.
und (0-9) willst du sicher auch nicht, eher sowas ([0-9].*)
Antworten
Beitrag von sascha (539 Beiträge) am Mittwoch, 12.September.2007, 14:14.
Re: Re: Re: Re: Re: Re: Re: Re: rewrite
hab grad mal ins error.log geschaut und da steht:
[Wed Sep 12 14:09:26 2007] [error] [client 000.000.00.00] File does not exist: /usr/virtualweb/domain.de/html/meldung_5.html
:-(
Antworten
Beitrag von sascha (539 Beiträge) am Mittwoch, 12.September.2007, 14:31.
Re: Re: Re: Re: Re: Re: Re: Re: Re: rewrite
Antworten
Beitrag von Pouraga (1396 Beiträge) am Mittwoch, 12.September.2007, 15:00.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: rewrite
Das dieses Muster nun passt ist purer zufall. Und obwohl ich weiss das es dich kein bischen interessiert warum, schreib ich es jetzt dennoch:
Wenn du genau eine einstellige Zahl finden möchtest reicht ([1-9]) denn [0-9]* findet jetzt, in deinem Beispiel nichts (was es aber durch "*" auch darf im gegensatz zu "+"). Weil keine Zahlen mehr danach kommen ist es hier auch nicht schlimm das der Punkt nicht maskiert ist weil er ein beliebieges Zeichen repräsentiert. Und ein Zeichen nach dem genügsamen Stern ist zufällig der Punkt. Danach wird dann auch "html" gefunden, glück gehabt. ;)
RewriteRule ^/meldung_(.+)\.html$ /cgi-bin/baseportal.pl?htx=/meldung&Id==$1
hätte aber auch funktioniert.... und sogar text gefunden.
Wenn der Punkt nicht maskiert ist rennt (.*). so lange duch den text bis es das letzte findet was auf . passt (gierig) und das ist nunmal alles. Also wurde vorher das "html" niemal gefunden und deine RewriteRule nicht angewendet.
Antworten
Beitrag von sascha (539 Beiträge) am Mittwoch, 12.September.2007, 16:39.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: Re: rewrite
hallo pouraga,
mit glück soll das nix zu tun haben, daher nehme ich deine erläuterung
dankend auf und versuche das ganze auch zu verstehen.
grüße & danke
sascha
Antworten
Beitrag von Robert (128 Beiträge) am Mittwoch, 12.September.2007, 08:32.
Re: Re: Re: Re: rewrite
Bei mir habe ich in die httpd hineingeschrieben:
RewriteEngine On
RewriteRule ^/baseportal/meldung(.*)$ /cgi-bin/baseportal.pl?htx=$1 [QSA,PT]
und das funtioniert seit mehreren Jahren.
Vielleicht hilft Dir das.
Antworten