mod_rewrite problem
from MakD42 & Godspeed
Wir posten den gesamten Vorgang für Suchmaschinenfreundliche URL via mod_rewrite & .htaccess für Navigation, Hilfsnavi und News sobald ein wenig Zeit ist - hier im Forum. Natürlich inkl. index.php für noch besseren Suchergebnisse.
Ergebnis zu sehen unter: http://www.setup-scout.de
Gruß MakD42 & Godspeed
Ergebnis zu sehen unter: http://www.setup-scout.de
Gruß MakD42 & Godspeed
MakD 42
______________________
Contenido 4.6.8 & 4.8.15
MySQL 5.1.54
Linux/Apache
Meine Contenidoprojekte: art & weise | StadtMedia | aidea
______________________
Contenido 4.6.8 & 4.8.15
MySQL 5.1.54
Linux/Apache
Meine Contenidoprojekte: art & weise | StadtMedia | aidea
und genau das wollte ich nicht machen
ich wollte innerhalb von contenido bei diesem fall nichts angreifen...
ich geh den anderen weg... (da brauch ich keinerlei module mehr ändern)
wenns unterstützt wird, wirds verwendet, wenn nicht, normale anzeige wie bisher...
bei mir ist die url syntax zwar nicht so schön, dafür ist es aber egal wieviele variablen und werte da zusammenkommen (reihenfolge ist ebenso egal)

ich geh den anderen weg... (da brauch ich keinerlei module mehr ändern)
wenns unterstützt wird, wirds verwendet, wenn nicht, normale anzeige wie bisher...
bei mir ist die url syntax zwar nicht so schön, dafür ist es aber egal wieviele variablen und werte da zusammenkommen (reihenfolge ist ebenso egal)
laufen tut meine routine momentan mit php4.1.0 für php4.0.6 muss ich noch ne menge ändern...
im prinzip leitet meine .htaccess alle anfragen auf mein file um...
nimmt den url string auseinander den $_SERVER['REQUEST_URI'] liefert...
und transformiert dies anschließend in eine normale url die das script versteht.
diese transformierte url wird anschließend in eine variable geladen und dann werden sämtliche urls, die dort angefunden werden, auf ein format formatiert die von der .htaccess wieder auf die index.php umgeleitet werden können.
erst dann erfolgt die ausgabe des umgeformten quelltextes...
zusätzlich werden ebenfalls alle anfragen die via post gesendet werden in einen location string umgewandelt und mitübergeben...
ebenso werden mit angegebene location strings ebenfalls übergeben...
leere zuweisungen wie &a=&b=&c= werden entfernt...
bei der ersetzung wird ebenso darauf geachtet anchors zu berücksichtigen...
der vorteil diese methode ist für mich wie gesagt das ich nichts an bestehenden modulen ändern muss... und das ich es ansich für jedes andere content managment system verwenden kann...
momentan werden nur ersetzungen bei <a href= vorgenommen
form posts, gets sind noch nicht bei den ersetzungen berücksichtigt...
img src ersetzungen sind bei dieser variante nicht notwendig...
und ich brauche keine weiteren änderungen an der .htaccess vornehmen...
javascript window.open konstrukte werden nicht ersetzt...
eine transformation von urls wie
http://localhost/directory/request/id/1/page/1/
ist in diesem frühen stadium der routine nicht berücksichtigt
(da würden img ersetzungen noch dazukommen)
short urls (wie 2-3-4-5-content.php) sind theoretisch zwar möglich nur verwende ich noch nicht...
eine erste version läuft momentan unter {zensur}
auf php 4.1.0 -> bitte mit vorsicht geniessen da die seite noch lange nicht fertig ist... und jede menge inhalte fehlen...
im prinzip leitet meine .htaccess alle anfragen auf mein file um...
nimmt den url string auseinander den $_SERVER['REQUEST_URI'] liefert...
und transformiert dies anschließend in eine normale url die das script versteht.
diese transformierte url wird anschließend in eine variable geladen und dann werden sämtliche urls, die dort angefunden werden, auf ein format formatiert die von der .htaccess wieder auf die index.php umgeleitet werden können.
erst dann erfolgt die ausgabe des umgeformten quelltextes...
zusätzlich werden ebenfalls alle anfragen die via post gesendet werden in einen location string umgewandelt und mitübergeben...
ebenso werden mit angegebene location strings ebenfalls übergeben...
leere zuweisungen wie &a=&b=&c= werden entfernt...
bei der ersetzung wird ebenso darauf geachtet anchors zu berücksichtigen...
der vorteil diese methode ist für mich wie gesagt das ich nichts an bestehenden modulen ändern muss... und das ich es ansich für jedes andere content managment system verwenden kann...
momentan werden nur ersetzungen bei <a href= vorgenommen
form posts, gets sind noch nicht bei den ersetzungen berücksichtigt...
img src ersetzungen sind bei dieser variante nicht notwendig...
und ich brauche keine weiteren änderungen an der .htaccess vornehmen...
javascript window.open konstrukte werden nicht ersetzt...
eine transformation von urls wie
http://localhost/directory/request/id/1/page/1/
ist in diesem frühen stadium der routine nicht berücksichtigt
(da würden img ersetzungen noch dazukommen)
short urls (wie 2-3-4-5-content.php) sind theoretisch zwar möglich nur verwende ich noch nicht...
eine erste version läuft momentan unter {zensur}
auf php 4.1.0 -> bitte mit vorsicht geniessen da die seite noch lange nicht fertig ist... und jede menge inhalte fehlen...
Zuletzt geändert von emergence am Fr 21. Nov 2003, 15:08, insgesamt 1-mal geändert.
Hab an den Modulen auch nur das <a href= geändert, bis jetzt
.
Deine Methode klingt fast wie meine, nur das ich meine .php datei (wo meine url's wieder in Contenido vertendliche Form gebracht wird) in die front_content.php includet.
Ich hab nur das Problem das ich keine Umlaute verwenden darf und keine & Zeichen.

Deine Methode klingt fast wie meine, nur das ich meine .php datei (wo meine url's wieder in Contenido vertendliche Form gebracht wird) in die front_content.php includet.
Ich hab nur das Problem das ich keine Umlaute verwenden darf und keine & Zeichen.
-
- Beiträge: 6284
- Registriert: Do 15. Mai 2003, 18:32
- Wohnort: Da findet ihr mich nie!
- Kontaktdaten:
emergence: Klingt gut.
Geht auch so etwas wie:
http://foobar/index.php/idcat/9/idart/15
=>
http://foobar/front_content.php?idcat=9&idart=15
?
Geht auch so etwas wie:
http://foobar/index.php/idcat/9/idart/15
=>
http://foobar/front_content.php?idcat=9&idart=15
?
@timo
theoretisch geht das auch...
nur muss die requested uri anders behandelt werden...
da die nötigen information zb von $parsed = parse_url($_SERVER['REQUEST_URI']);
innerhalb von $parsed[path] ausgewertet werden müsste...
zusätzlich müsste noch img und form diesbezüglich modifiziert werden...
und die onthefly url ersetzung dementsprechend angepasst werden...
da sehe ich aber noch kein problem...
bei einer url wie
http://foobar/index.php/idcat/9/idart/15
problematisch für mich wäre (rate mal) die rewriterule diesbezüglich anzupassen! da stellts mich sicher wieder länge mal breite auf...
bei übergabe eines querystrings muss ich mir erst ansehen wie die zurückgelieferten werte aussehen...
dies war auch der grund warum ich die routine vorerst mal so konzipiert habe... alles weitere ist für mich eine ausbaustufe der grund routine -> aber da hab ich momentan noch ein paar andere probleme...
1. die anpassungen für php 4.0.6 vorzunehmen
2. die form post ersetzungen einzubauen
3. eventuell mittels db tabelle realnames anzuzeigen und urls im stil von impressum.html zu generieren... (nur müsste dann der titel eines dokuments einzigartig sein...)
für punkt 3 würde einfach nur dann eine umleitung von allen *.html anfragen auf die index.php vornehmen... die requestet uri in der db einfach abfragen und den entsprechend zurückgelieferten wert dann für die anforderung neu generieren...
und beim onthefly replacement -> werden die ersetzungen in der db eingetragen wenn der wert nicht vorhanden ist...
4. wenn ich das so durchziehe weiss ich noch nicht wie schnell oder langsam dieser spass eigentlich ist (momentan braucht eine auswertung und komplette ersetzung ca 0.014 sekunden) -> blöd wirds nur wenn das auf sagen wir mal 0.5 sekunden oder mehr ansteigt...
ich machs mal so: immer einen schritt nach dem anderen...
theoretisch geht das auch...
nur muss die requested uri anders behandelt werden...
da die nötigen information zb von $parsed = parse_url($_SERVER['REQUEST_URI']);
innerhalb von $parsed[path] ausgewertet werden müsste...
zusätzlich müsste noch img und form diesbezüglich modifiziert werden...
und die onthefly url ersetzung dementsprechend angepasst werden...
da sehe ich aber noch kein problem...
bei einer url wie
http://foobar/index.php/idcat/9/idart/15
problematisch für mich wäre (rate mal) die rewriterule diesbezüglich anzupassen! da stellts mich sicher wieder länge mal breite auf...
bei übergabe eines querystrings muss ich mir erst ansehen wie die zurückgelieferten werte aussehen...
dies war auch der grund warum ich die routine vorerst mal so konzipiert habe... alles weitere ist für mich eine ausbaustufe der grund routine -> aber da hab ich momentan noch ein paar andere probleme...
1. die anpassungen für php 4.0.6 vorzunehmen
2. die form post ersetzungen einzubauen
3. eventuell mittels db tabelle realnames anzuzeigen und urls im stil von impressum.html zu generieren... (nur müsste dann der titel eines dokuments einzigartig sein...)
für punkt 3 würde einfach nur dann eine umleitung von allen *.html anfragen auf die index.php vornehmen... die requestet uri in der db einfach abfragen und den entsprechend zurückgelieferten wert dann für die anforderung neu generieren...
und beim onthefly replacement -> werden die ersetzungen in der db eingetragen wenn der wert nicht vorhanden ist...
4. wenn ich das so durchziehe weiss ich noch nicht wie schnell oder langsam dieser spass eigentlich ist (momentan braucht eine auswertung und komplette ersetzung ca 0.014 sekunden) -> blöd wirds nur wenn das auf sagen wir mal 0.5 sekunden oder mehr ansteigt...
ich machs mal so: immer einen schritt nach dem anderen...
er wandelt bei meinem Skript z.B. das ü in ue soweit bin ich schon nur dann findet er die Seite nicht mehr. hatte mir Überlegt das ich beim Unschreiben der Umlaute sowas wie ein ! einfüge damit ich das wieder zurück schreiben kann.
Und das & habe ich bei mir als Link : Art & Weise.
mal schaun was der Tag heute Bringt
Und das & habe ich bei mir als Link : Art & Weise.
mal schaun was der Tag heute Bringt

Wie kann man eigentlich schaun wie lange eine Seite braucht zum laden?
Hab bei mir keine Änderung feststellen können.
Bin soweit fertig mit meinen Änderungen und es funzt auch alles. Sag mir mal was du davon hälst.
Änderung in der Hauptnavigation:
die Zeile
hab ich überall ersetzt durch
muss leider so lang sein damit das mit den Umlauten funzt
dann die .htaccess :
Und meine name.php datei die ich in der front_content.php includet und dann in das cms verzeichnis kopiert habe :
gruß Alex
Hab bei mir keine Änderung feststellen können.
Bin soweit fertig mit meinen Änderungen und es funzt auch alles. Sag mir mal was du davon hälst.
Änderung in der Hauptnavigation:
die Zeile
Code: Alles auswählen
$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat']));
Code: Alles auswählen
$seite = "";
for($i=0;$i<=strlen($data['name']);$i++){
$text = substr($data['name'], $i, 1);
switch($text){
case ü : { $seite .= "ue"; break;}
case Ü : { $seite .= "Ue"; break;}
case ä : { $seite .= "ae"; break;}
case Ä : { $seite .= "Ae"; break;}
case ö : { $seite .= "oe"; break;}
case Ö : { $seite .= "Oe"; break;}
default : { $seite .= $text;}
}
}
$tpl->set('d', 'HREF', $sess->url('aw'.$seite.'.html'));
dann die .htaccess :
Code: Alles auswählen
Options +FollowSymlinks
RewriteEngine On
RewriteRule /aw(.*)\.html$ /front_content.php?name=$1
Code: Alles auswählen
<?php
for($i=0;$i<=strlen($name);$i++){
$text = substr($name, $i, 1);
switch($text){
case u : {if(substr($name, $i+1, 1)=="e"){ $seite .= "ü"; $i = $i+1;}
else $seite .= $text;
break;}
case U : {if(substr($name, $i+1, 1)=="e"){ $seite .= "Ü"; $i = $i+1;}
else $seite .= $text;
break;}
case a : {if(substr($name, $i+1, 1)=="e"){ $seite .= "ä"; $i = $i+1;}
else $seite .= $text;
break;}
case A : {if(substr($name, $i+1, 1)=="e"){ $seite .= "Ä"; $i = $i+1;}
else $seite .= $text;
break;}
case o : {if(substr($name, $i+1, 1)=="e"){ $seite .= "ö"; $i = $i+1;}
else $seite .= $text;
break;}
case O : {if(substr($name, $i+1, 1)=="e"){ $seite .= "Ö"; $i = $i+1;}
else $seite .= $text;
break;}
default : { $seite .= $text;}
}
}
if($seite){
$sql = 'SELECT idcat FROM '.$cfg["tab"]["cat_lang"].' WHERE name="'.$seite.'"';
$db = new DB_Contenido;
$db->query($sql);
$db->next_record();
$idcat = $db->f("idcat");
}
?>
für selbstgeschriebene php files verwende ich am beginn der datei einfach:Godspeed hat geschrieben:Wie kann man eigentlich schaun wie lange eine Seite braucht zum laden?
Code: Alles auswählen
$t_start = doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime()));
Code: Alles auswählen
$t_end = doubleval(ereg_replace('^0\.([0-9]*) ([0-9]*)$','\\2.\\1',microtime()));
echo "Generated in ".($t_end-$t_start)." seconds.\n";
ähm, ich würde an deiner stelle bei den variablen eindeutigere namen verwenden, wo die gefahr nicht besteht, das sie von einem anderen modul eventuell geändert oder überschrieben werden... die lesbarkeit erhöht sich ungemein. ($i, $seite etc... sind nicht ideal) abgesehen würde dein code so ziemlich mit jeder php version funktionierenGodspeed hat geschrieben:Sag mir mal was du davon hälst.

die ersetzung von umlauten würde ich anders lösen (ich würd komplett drauf verzichten, ein problem mit leerzeichen wirst du auch haben) sieh dir die funktion urlencode(oder ähnliche funktionen) an. -> http://at.php.net/manual/en/function.urlencode.php
Godspeed hat geschrieben: dann die .htaccess :Code: Alles auswählen
Options +FollowSymlinks[/quote] versuch mal diese zeile zu streichen, obs bei dir dann noch läuft -> einige provider werfen eine fehlermeldung raus, wenn diese zeile drinnen ist, bei mir gehts ohne... zum testen hab ich momentan leider keine zeit, aber ich sehs mir an...
Guter Einwand mit den Variablen, bin das mit dem i leider so von C gewöhnt
.
Mit Leerzeichen hab ich keine Probleme und es geht auch ohne Options +FollowSymlinks.
Das mit den Umlauten ist da schon eher ein Problem, weil ich dabei bin eine schon recht große Seite umzuschreiben. Da es sich bei der Seite um Gründer informationen handelt kommen auch sehr viele Umlaute vor und es sieht seltsam aus, wenn ich ich die so ersetze.

Mit Leerzeichen hab ich keine Probleme und es geht auch ohne Options +FollowSymlinks.
Das mit den Umlauten ist da schon eher ein Problem, weil ich dabei bin eine schon recht große Seite umzuschreiben. Da es sich bei der Seite um Gründer informationen handelt kommen auch sehr viele Umlaute vor und es sieht seltsam aus, wenn ich ich die so ersetze.
also jetzt hab ich mal die anpassungen für 4.0.6 alle drinnen und funkt auch. nur bin ich jetzt auf ein neues problem gefunden welches ich noch nicht beachtet hatte.
@timo
irgendeine ahnung wie ich die $_SESSION auslesen und weitergeben kann ?? das mit pass through schluckt alles bis diese variable...
auf gut deutsch bei jedem klick auf einen link wird eine neue Sessionvariable gesetzt(sehe ich in der db)...
@timo
irgendeine ahnung wie ich die $_SESSION auslesen und weitergeben kann ?? das mit pass through schluckt alles bis diese variable...
auf gut deutsch bei jedem klick auf einen link wird eine neue Sessionvariable gesetzt(sehe ich in der db)...