Original AdvancedMod Rewrite 4.6.15

Stelli

URL wird nicht aufgelöst

Beitrag 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
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag von rene04 »

keiner ne lösung für mein dillema?

gruesse
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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.
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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.
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
Zuletzt geändert von rene04 am Di 25. Jul 2006, 12:22, insgesamt 1-mal geändert.
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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.
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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!)
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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) . '/';
}
rene04
Beiträge: 600
Registriert: Mo 10. Okt 2005, 12:28
Wohnort: Kaiserslautern
Kontaktdaten:

Beitrag 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
stese
Beiträge: 1040
Registriert: Fr 3. Dez 2004, 17:47
Wohnort: München
Kontaktdaten:

Beitrag 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) . '/';
}
Gesperrt