Seite 29 von 53
URL wird nicht aufgelöst
Verfasst: Do 20. Jul 2006, 15:27
von Stelli
Hi,
vielen Dank erst einmal für das tolle Modul - wollte grad selbst RewriteRules schreiben...
Allerdings hab ich grad ein Problem bei der Auflösung der URLs:
- auf der ersten Ebene kein Problem:
cms/index.html - wird richtig angezeigt
- auf der 2ten Ebene auch
cms/credits/ - wird richtig angezeigt
- ab der 3ten ebene werden alle elemente ignoriert
cms/credits/manufacturers/credits---manufacturers.html - zeigt immer noch die gleiche seite wie: cms/credits/
wenn ich das richtig verstehe, dann werden die entsprechenden seiten nicht gefunden...
Meine Konfig:
contenido 4.6.8 - upgedated auf Advanced ModRewrite, d.h. folgende Files ersetzt und setup mit upgrade durchgeführt (art_lang enthält urlname und urlname ist für jeden Artikel gesetzt):
_.htaccess .\
index.php .\
front_content.php .\cms\
.htaccess .\cms\upload\
.htaccess .\contenido\
class.modrewrite.php .\contenido\classes\
config.misc.php .\contenido\includes\
functions.api.string.php .\contenido\includes\
functions.con.php .\contenido\includes\
functions.general.php .\contenido\includes\
functions.modrewrite.php .\contenido\includes\
functions.str.php .\contenido\includes\
functions.upl.php .\contenido\includes\
globals_off.inc.php .\contenido\includes\
include.client_edit.php .\contenido\includes\
include.con_edit_form.php .\contenido\includes\
include.con_editcontent.php .\contenido\includes\
include.con_subnav.php .\contenido\includes\
include.grouprights_subnav.php .\contenido\includes\
include.right_top_blank.php .\contenido\includes\
include.rights_subnav.php .\contenido\includes\
include.str_aliases.php .\contenido\includes\
include.subnav.php .\contenido\includes\
include.tpl_subnav.php .\contenido\includes\
include.upl_files_overview.php .\contenido\includes\
pseudo-cron.inc.php .\contenido\includes\
template.con_edit_form.html .\contenido\templates\standard\
dbupdate.php .\setup\
makeconfig.php .\setup\
tables.txt .\setup\data\
examples_misc6.sql .\setup\data\examples\
functions.modrewrite.php .\setup\lib\
config.php.tpl .\setup\templates\
Jmd. eine Idee, worauf mein Prob. basiert?
Besten Dank im Vorraus,
Stelli
P.S.: Hab den kompletten Thread durchforstet und keinen Hinweis auf ein ähnliches Prob. gefunden
Verfasst: Di 25. Jul 2006, 08:00
von rene04
keiner ne lösung für mein dillema?
gruesse
Verfasst: Di 25. Jul 2006, 08:54
von stese
was geht denn nicht? die htaccess erweiterung wie sie oben steht funktioniert einwandfrei. siehe hier:
http://www.polycoder.de/contenido-wcms/ ... n/advanced
zu checken ob der artikelname vorhanden ist, kann ich momentan nicht machen, da keine zeit.
Verfasst: Di 25. Jul 2006, 09:25
von rene04
ja, das mit dem artikelnamen meinte ich. ich seh es mir mal an. wäre aber fein wenn du dir das auch mal ansehen würdest fals ichs net hinbekomm
die htaccess erweiterung funktioniert nun auch bei mir. war wohl ein tippfehler.
gruesse
Verfasst: Di 25. Jul 2006, 09:35
von stese
ok front_content öffnen, nach dem abschnitt suchen (bei mir zeile 231):
Code: Alles auswählen
// edit by stese - ModRewrite
// get idart
if ( isset($artname) && !empty($artname) && !isset($idart)) {
$idart = mr_get_idart ( $artname, $idcat );
}
// Fehlerseite
$str_errsite = "front_content.php?client=$client&idcat=".$errsite_idcat[$client]."&idart=".$errsite_idart[$client]."&lang=$lang&error=1";
if ( $cfg['mod_rewrite']['use'] == 1 ) {
if ( preg_match ( "/^front_content\.php(.*|.+?)/i", $str_errsite, $arr_hits ) == 1 ) {
$str_errsite = ModRewrite::build_new_url($arr_hits[1]);
}
}
$errsite = "Location: " . $str_errsite;
// end edit
und durch diesen ersetzen:
Code: Alles auswählen
// edit by stese - ModRewrite
// Fehlerseite
$str_errsite = "front_content.php?client=$client&idcat=".$errsite_idcat[$client]."&idart=".$errsite_idart[$client]."&lang=$lang&error=1";
if ( $cfg['mod_rewrite']['use'] == 1 ) {
if ( preg_match ( "/^front_content\.php(.*|.+?)/i", $str_errsite, $arr_hits ) == 1 ) {
$str_errsite = ModRewrite::build_new_url($arr_hits[1]);
}
}
$errsite = "Location: " . $str_errsite;
// get idart
if ( isset($artname) && !empty($artname) && !isset($idart)) {
$idart = mr_get_idart ( $artname, $idcat );
if (!$idart || (int)$idart == 0) {
header($errsite);
}
}
// end edit
habe das ganze zwar nicht getestet sollte aber funktionieren.
Verfasst: Di 25. Jul 2006, 09:41
von rene04
hi stese,
danke dir. hast das aber net asap machen müssen jetzt. wollt dich net in zusätzlichen stress versetzen

trotzdem vielen dank. ich teste das mal.
gruesse
Verfasst: Di 25. Jul 2006, 11:10
von rene04
hallo,
also mit fehlerhafter dingens.html klappt das nun mit der fehlerseite.
wenn ich etwas ohne .html angebe bleibt es auf der site stehen, kann man das auch auf die error site legen?
also:
http://www.siedatest.de/de/unternehmen/untern und
http://www.siedatest.de/de/unter
sollen auch die fehlerseite anzeigen!
hauptproblem ist noch:
http://www.siedatest.de/de - ist voll in ordnung
http://www.siedatest.de/d -
http://www.siedatest.de/.html?error=1
Forbidden
You don't have permission to access /.html on this server.
gruesse rene
Verfasst: Di 25. Jul 2006, 12:20
von stese
hier stimmt bei dir was nicht, dein artikel hat keinen gültigen urlnamen ... sonst würde nicht .html stehen.
bei mir klappt wie gesagt alles. das auf der seite stehen bleiben ist wie gesagt eigentlich so gewollt, da die pathresolver funktion
ähnliche namen sucht. das ding habe nicht ich, sondern f4b geschrieben. wenn du andere anforderungen hast, steht es dir frei die funktion so abzuändern dass es für dich passt. ich mache es jedenfalls nicht.
Verfasst: Di 25. Jul 2006, 12:24
von rene04
wie gesagt zurüch bis zum de klappt ja alles wunderbar. nur sobald ich das de verändere (was ja die sprachangabe ist) kracht es. das de ersetzt praktisch das cms in der url.
gruesse
Verfasst: Di 25. Jul 2006, 12:28
von stese
ja und wie gesagt: es timmt was mit deinem fehlerartikel nicht!
http://www.siedatest.de/.html?error=1
deutet darauf hin, dass dein fehlerartikel keinen urlalias hat und deswegen ein forbidden kommt. - checke noch einmal deine datenbank und vor allem dort das feld urlname in der tabelle [präfix]_art_lang sind wirklich alle artikel gefüllt? ... wenn ja, hast du auch einen korrekten fehlerartikel in den mandanteneinstellungen gesetzt? (das glaube ich nämlich momentan nicht!)
Verfasst: Di 25. Jul 2006, 12:37
von rene04
auszug aus phpmyadmin:
Code: Alles auswählen
vollständige Textfelder idartlang idart idlang idtplcfg title urlname pagetitle summary artspec created lastmodified author modifiedby published publishedby online redirect redirect_url artsort timemgmt datestart dateend status free_use_01 free_use_02 free_use_03 time_move_cat time_target_cat time_online_move external_redirect locked
Bearbeiten Löschen 475 433 1 557 Error Error Sieda GmbH Kaiserslautern - Error Error 0 2006-07-25 11:53:08 2006-07-25 11:58:35 rosenberger rosenberger 2006-07-25 11:54:06
ja ich habe eine fehlerseite in den mandanteneinstellungen angelegt, sonst würde es ja mit den anderen fehlerhaften bla.html's nicht funktionieren, oder?
gib doch einfach mal folgendes ein:
http://www.siedatest.de/de/produkte/produkte.html --> normal
http://www.siedatest.de/de/produkte/prod.html --> Fehlerseite wird angezeigt
http://www.siedatest.de/de/produkte/pro --> site bleibt stehen: OK
http://www.siedatest.de/de/prod --> site bleibt stehen: OK
http://www.siedatest.de/d -> Forbidden
also die Fehlerseite funktioniert im prinzip schon.
gruesse
Verfasst: Di 25. Jul 2006, 12:46
von stese
ok, könnte damit zusammenhängen, dass er zwar irgendwas findet (nämlich das d) und laut den settings denkt er ok, ist der language name, aber kann ihn nicht korrekt zurückrechnen.
suche die beiden funktionen (zeile 63 bei mir)
Code: Alles auswählen
// get client id
if (is_array($parts) && count($parts)>0 && $cfg['mod_rewrite']['use_client'] == 1 && $cfg['mod_rewrite']['use'] == 1 ) {
if ($cfg['mod_rewrite']['use_client_name'] == 1) {
$changeclient = mr_get_client_id(array_shift($parts));
$int_client = $changeclient;
} else {
$changeclient = (int)array_shift($parts);
$int_client = $changeclient;
}
}
// get languages id
if (is_array($parts) && count($parts)>0 && $cfg['mod_rewrite']['use_language'] == 1 && $cfg['mod_rewrite']['use'] == 1 ) {
if ($cfg['mod_rewrite']['use_language_name'] == 1) {
// thanks to Nicolas Dickinson for multi Client/Language BugFix
$changelang = mr_get_language_id( array_shift($parts) , $int_client);
} else {
$changelang = (int)array_shift($parts);
}
}
und ersetze diese durch die beiden:
Code: Alles auswählen
// get client id
if (is_array($parts) && count($parts)>0 && $cfg['mod_rewrite']['use_client'] == 1 && $cfg['mod_rewrite']['use'] == 1 ) {
if ($cfg['mod_rewrite']['use_client_name'] == 1) {
$changeclient = mr_get_client_id(array_shift($parts));
$int_client = $changeclient;
} else {
$changeclient = (int)array_shift($parts);
$int_client = $changeclient;
}
if ( empty($changeclient) || (int)$changeclient == 0 ) {
unset($changeclient);
}
}
// get languages id
if (is_array($parts) && count($parts)>0 && $cfg['mod_rewrite']['use_language'] == 1 && $cfg['mod_rewrite']['use'] == 1 ) {
if ($cfg['mod_rewrite']['use_language_name'] == 1) {
// thanks to Nicolas Dickinson for multi Client/Language BugFix
$changelang = mr_get_language_id( array_shift($parts) , $int_client);
} else {
$changelang = (int)array_shift($parts);
}
if ( empty($changelang) || (int)$changelang == 0 ) {
unset($changelang);
}
}
wenn es nicht geht kann ich so schnell nicht helfen
Verfasst: Di 25. Jul 2006, 12:50
von stese
und am besten gleich danach folgendes suchen:
Code: Alles auswählen
// set path settings for path resolver
if (is_array($parts) && count($parts)>0) {
$path = '/' .implode("/", $parts) . '/';
}
und durch folgendes ersetzen:
Code: Alles auswählen
// set path settings for path resolver
$parts = array_filter($parts);
if (is_array($parts) && count($parts)>0) {
$path = '/' .implode("/", $parts) . '/';
}
Verfasst: Di 25. Jul 2006, 13:28
von rene04
Code: Alles auswählen
Warning: array_filter(): The first argument should be an array in /var/www/web4/html/cms/front_content.php on line 92
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 479
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 484
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 485
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 486
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 487
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 488
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/conlib/session.inc on line 489
Warning: Cannot modify header information - headers already sent by (output started at /var/www/web4/html/cms/front_content.php:92) in /var/www/web4/html/cms/front_content.php on line 209
gruesse
Verfasst: Di 25. Jul 2006, 14:19
von stese
ok dann bitte so schreiben
Code: Alles auswählen
// set path settings for path resolver
if (is_array($parts)) {
$parts = array_filter($parts);
}
if (is_array($parts) && count($parts)>0) {
$path = '/' .implode("/", $parts) . '/';
}