Seite 3 von 17
Verfasst: Mi 16. Feb 2005, 15:47
von martin2002
timo hat geschrieben:Ich vermute, daß die Funktion preg_replace einfach einen falschen RegExp-Suchstring bekommt...
genau...
das element, welches das problem verursacht ist -> "/\\/" <- in $arr_original.
und zwar aus folgendem grund:
der \ wird ja in php verwendet um ein steuerzeichen einzuleiten, deshalb schreibt man auch \\ wenn man den \ selbst haben will... deshalb kommt anscheinen in der preg_replace funktion nur noch folgendes an: "/\/"
da aber der \ in den pregs die funktion hat besondere zeichen ihrer funktion zu entbinden, wird der letzte / nicht mehr als abschluss des ausdrucks interpretiert, sondern als der ausdruck selbst und der abschluss fehlt dann ("No ending delimiter '/' found")...
um dem entgegen zu wirken fällt mir nur ein den gesamten ausdruck so zu notieren: "/\\\\/" -> php wandelt jetzt jeweils ein paar \\ in \ um und übergibt dann "/\\/" an die funktion.
Verfasst: Fr 18. Feb 2005, 10:08
von llaron
hallo,
ich habe die modifizierte contenido version 4.4.4 von stese einmal runtergeladen und installiert. nur gibt es irgendwelche probleme mit den pfaden, wenn ich in der navigation der standardinstallation klicke, wie z.b.:
http://graph-o-lution.info/home/graph-o ... nfo/www///
ich nehme an, dass ich in der htaccess den "RewriteBase" pfad oder in der config den "/* Path to the htaccessfile with trailling slash */" falsch angepasst habe!?
kurz zum Pfad in der config (/* Path to the htaccessfile with trailling slash */). hier sollte wohl der server-pfad rein, wie in meinem fall:
sehe ich das richtig?
nun zum pfad der htaccess, hier sollte ja auch der serverpad zum cms verzeichnis rein, also:
ist mir hier iegrndwo ein fahler unterlaufen? oder woran kann es noch liegen, dass die urls nicht richtig geschrieben werden?
dank im voraus + gruß,
Nico (der von php soviel ahnung hat, wie ein ...)
Verfasst: Fr 18. Feb 2005, 12:03
von stese
hi,
der browser interpretiert ja die .htaccess also muss der pfad zur .htaccess auch aus sicht des browsers von der root der domain eingefügt werden. also keine server root pfade!
in der config file muss die variable so gesetzt werden:
wenn die .htaccess im root verzeichnis auf w w w.deinedomain.de liegt
wenn ein unterverzeichnis existiert um z.b. nur im CMS verzeichnis von contenido zu wirken, dann muss das so lauten:
wenn die .htaccess im root verzeichnis auf w w w.deinedomain.de/cms/ liegt
in der .htaccess muss man die RewriteBase ebenfalls aus sicht des browsers anpassen. liegt die .htaccess im gleichen verzeichnis wie die front_content.php (also im verzeichnis cms) kann man diese RewriteBase zeile weg lassen. liegt das contenido in der root webservers, dann muss die RewriteBase auf /cms gesetzt werden, liegt das contenido in einem unterverzeichnis des webservers muss die rewritebase natürlich auch dieses unterverzeichnis enthalten also z.b. /projekt1/cms
etc ...
WICHTIG: dieses modifizierte cms ist derzeit in der Testphase! und sollte nur auf eigene gefahr eingesetzt werden und wenn man weiss was man macht und welche befehle wie anzuwenden sind, daher richtet sich dieses bundle auch an erfahrene entwickler!
bei dir sehe ich z.b. auch anhand deiner url mit den abschliessenden /// dass du versuchst das cms auf eine bestehende datenbank aufzusetzen. das wird zu fehlern führen, weil es derzeit keine funktion gibt, die die erweiterten datenfelder mit daten eines bestehenden CMS befüllt. das bundle ist dafür gedacht, wenn man eine neue website
ohne beispiele anlegt. also theoretisch muss man in deinem falle erst jeden artikel und jede kategrie anschauen und speichern, damit die speicherroutine für die websicheren namen greift!
Verfasst: Fr 18. Feb 2005, 12:20
von llaron
hi stese,
vielen dank für deine hilfe - jetzt funktioniert es!
ich nutze das ganze auch selbst erst mal zu test-zwecken. aber die lösung gefällt mir sehr gut. schließlich kommt man heutzutage ohne websichere url's nicht mehr sehr weit. wenn man sich ein wenig mit suchmaschinenoptimierung befasst, wie ich das nebenher tue, dann ist das eine sehr gute lösung!
gruß,
Nico
Verfasst: Do 17. Mär 2005, 10:31
von Salech
Hallo,
funktioniert das Modul auch mit dem
DHTML Menü? Bei mir nämlich nicht.
Oder was muss ich da noch ändern?
Verfasst: Do 17. Mär 2005, 10:38
von stese
nein funktioniert nicht.
der sucht derzeit explizit nach
und ersetzt dieses durch die korrekte url.
für fortgeschrittene webentwickler, für die dieses modul gedacht ist, sollte es allerdings kein problem darstellen, das script dahingehend abzuändern, dass es die urls auch innerhalb von '' berücksichtigt.
Verfasst: Do 17. Mär 2005, 10:41
von Salech
Das ging ja schnell! Danke.
Ok, dann werde ich wohl was basteln müssen.
Verfasst: Fr 18. Mär 2005, 17:29
von Salech
Bin nun mal kein PHP-Gott möchte aber diese sehr coole mod_rewrite Erweiterung benutzen...
Die Umwandlung erfolgt hier in der front_content.php
Code: Alles auswählen
// ok let it beginn, start mod rewrite class
$str_all = preg_replace("/href=[\"|\']front_content\.php(.?|.+?)[\"|\']/ie", "'href=\"'.ModRewrite::build_new_url('\\1').'\"'", $str_all);
oder?
Hier ist ein Teil meiner DHTML-Navigation:
Code: Alles auswählen
var menue = new TMainMenu('menue','horizontal');
var Menue_1 = new TPopMenu('LEISTUNGEN','5','a','front_content.php?idcat=3&lang=1','LEISTUNGEN');
menue.Add(Menue_1);
Bin für kleine Tipps dankbar
Salech
Verfasst: Sa 19. Mär 2005, 06:52
von stese
schreib den aufruf mal bitte so:
Code: Alles auswählen
// ok let it beginn, start mod rewrite class
$str_all = preg_replace("/([\"|\'])front_content\.php(.?|.+?)([\"|\'])/ie", "stripslashes('\\1'.ModRewrite::build_new_url('\\2').'\\3')", $str_all);
nen versuch isses wert
Verfasst: Sa 19. Mär 2005, 11:00
von Salech
Du bist GUT!!
Danke - klappt perfekt!
Verfasst: Di 22. Mär 2005, 08:47
von Vince
Hallo,
klappt dieses mod-rewrite auch in der Ver. 4.4.5-r1 ?
Falls ja, würde ich das manuell nachinstallieren. Da ich erst einige Seiten stehen habe, sollte das dann machbar sein, denke ich.
greetz, Vince
Verfasst: Di 22. Mär 2005, 09:19
von stese
kann ich dir nicht sagen, weil ich mir die 4.4.5 nicht angeschaut habe ... für die 4.5.2 alpha muss man auf jeden fall einiges umprogrammieren.
Verfasst: Di 22. Mär 2005, 10:50
von Salech
da hab ich wohl zu früh gesagt – klappt perfekt!
1. in der config.php
Code: Alles auswählen
/* Start TreeLocation vrom Root Tree (set to 1) or get location from first category (set to 0) */
$cfg['mod_rewrite']['startfromroot'] = 1;
bei 1 läuft alles relativ perfekt – bei 0 was ich eigentlich will geht's gar nichts.
2. in der front_content.php
2.1 im Menü wird die 3. Ebene (bzw. die 4. da siehe oben):
Code: Alles auswählen
var Menue_2_4_1 = new TPopMenu('xxx','5','a','/xxx/xxx/xxx/xxx/','xxx');
Menue_2_4.Add(Menue_2_4_1);
nicht gefunden:
Not Found
The requested URL /xxx/xxx/xxx/xxx/ was not found on this server.
2.2 "Normale" InterneLinks:
werden im Moment so <a href="/"> zerhackt – sodass sie nicht mehr funktionieren.
Verfasst: Di 22. Mär 2005, 20:35
von Vince
Hi,
hmm ... je weiter man in Contenido eindringt, desto öfter liegen Steine im Weg
Ich wollte ein simples mod-rewrite erzeugen mittels einiger oben genannter Codezeilen, weil das eigentlich für meine Belange reichen sollte.
Das funzt aber irgendwie nicht, es kommt immer ein ServerError500.
Eintrag in der Nav:
Code: Alles auswählen
$tpl->set('d', 'HREF', $sess->url($data['name'].'-'.$data['idcat'].'.html'));
Eintrag in der .htaccess:
Code: Alles auswählen
RewriteEngine On
RewriteRule ^(.*)-([0-9]*).html$ /cms/front_content.php?idcat=$1&idart=$2
RewriteRule ^(.*)-([0-9]*).html$ /cms/front_content.php?idcat=$1
Da ich mich bisher noch nicht damit rumschlagen brauchte, kenn ich mich da auch kaum aus. Wo liegt das Prob? Wäre super, wenn mir da mal jemand die Zeilen richtig hinbastelt und die Änderungen kurz erklärt.
Danke euch, Vince
Verfasst: Mi 23. Mär 2005, 19:55
von stese
Salech hat geschrieben:da hab ich wohl zu früh gesagt – klappt perfekt!
2. in der front_content.php
2.1 im Menü wird die 3. Ebene (bzw. die 4. da siehe oben):
Code: Alles auswählen
var Menue_2_4_1 = new TPopMenu('xxx','5','a','/xxx/xxx/xxx/xxx/','xxx');
Menue_2_4.Add(Menue_2_4_1);
nicht gefunden:
Not Found
The requested URL /xxx/xxx/xxx/xxx/ was not found on this server.
hi, das mit den zu vielen ebenen habe ich momentan am eigenen leib gespürt - hatte nen flüchtigen denkfehler drinn, der einen das komplette mod rewrite zerhaut bei mehr als 2 ebenen.
bis ich das package geupdatet habe, gibts hier den bugfix:
öffne die datei functions.modrewrite.php in contenido/includes/
gehe zu zeile 124 und suche nach
die muss so geschrieben werden:
(also die [0] am ende des arrays hinzufügen, sonst werden leere catids übergeben)
das sollte zumindestens dein problem 1 und 2.1 lösen - vll. hat man ja glück und es löst auch gleich die 2.2 (ich schätze mal schon)