[HomePage :: Fehlerbehebung :: ImpressCMS-Tuning :: SEO Optimierung - sprechende URLs :: Dieser Seite] |
ImpressCMS und URL rewrite |
Eigentlich klappt ja alles, bis .. ja bis auf mein scheitern, sobald ich ein Start Modul definiere! Ich präsentiere hier mal meine Einstellungen bis zu dem Punkt an dem ich scheitere.
Erstmal die .htaccess (enthält auch Umleitungen zu Fehlerseiten (ErrorDocument), die ich herraus genommen habe):
Die mainfile.php enthält am Anfang folgenden Code, damit sichergestellt ist, das alle Seiten auch mit alten URLS erreichbar sind:
Für "xcgal" als Startmodul ist nach meinen Recherchen folgender Eintrag nötig:
Das klappt auch soweit, ABER: Die Links zu den Alben oder einzelnen Fotos funkionieren nicht mehr richtig. Oder Icons aus dem Programm fehlen, weil eben ein falscher Pfad rauskommt.
Aus
wird
und der Link geht "ins Leere".
Welchen Eintrag hab ich da falsch? Meine rewrite Kenntnisse sind noch ziemlich gering und basieren eigentlich noch auf copy & paste. Hat jemand einen Tip?
DANKE SAGEN: Für das Dokument, mein aller besten Dank an @Feichtl. Er hat mit viel Mühe die Infos zusammen gesammelt und uns bereit gestellt.
Erstmal die .htaccess (enthält auch Umleitungen zu Fehlerseiten (ErrorDocument), die ich herraus genommen habe):
AddDefaultCharSet utf-8
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.meinedomain.com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www.meinedomain.com/$1 [L,R=301]
RewriteRule ^kontakt/(.*)$ modules/xforms/$1 [L]
RewriteRule ^info/(.*)$ modules/info/$1 [L]
RewriteRule ^neues/(.*)$ modules/news/$1 [L]
RewriteRule ^hobbys/(.*)$ modules/portfolio/$1 [L]
RewriteRule ^fotos/(.*)$ modules/xcgal/$1 [L]
RewriteRule ^ads/(.*)$ modules/mastop_go2/$1 [L]
RewriteRule ^gaestebuch/(.*)$ modules/casdedi/$1 [L]
RewriteRule ^main.css$ icms.css [L]
RewriteRule ^include/main.js$ include/xoops.js [L]
RewriteRule ^login user.php [L]
RewriteRule ^suche(.*)$ search.php$1 [L]
Die mainfile.php enthält am Anfang folgenden Code, damit sichergestellt ist, das alle Seiten auch mit alten URLS erreichbar sind:
$GLOBALS['_rewriteRulesFrom'] = array(
'/kontakt/',
'/info/',
'/neues/',
'/hobbys/',
'/fotos/',
'/gaestebuch/',
'/main.css',
'/include/main.js',
'/login',
'/suche',
);
$GLOBALS['_rewriteRulesTo'] = array(
'/modules/xforms/',
'/modules/info/',
'/modules/news/',
'/modules/portfolio/',
'/modules/xcgal/',
'/modules/casdedi/',
'/icms.css',
'/include/xoops.js',
'/user.php',
'/search.php',
);
$GLOBALS['_abs_offset'] = preg_replace('/https?:\/\/'.$_SERVER["HTTP_HOST"].'/','',ICMS_URL);
$GLOBALS['_rewriteRulesTo1'] = preg_replace('/^(.*)$/e','"!('.ICMS_URL.'|\"".$GLOBALS["_abs_offset"]."|\'".$GLOBALS["_abs_offset"].")".preg_quote("\1","!")."!"', $GLOBALS['_rewriteRulesTo']);
$GLOBALS['_rewriteRulesFrom1'] = preg_replace('/^(.*)$/','\\\1\1',$GLOBALS['_rewriteRulesFrom']);
function modules_changer( $s ) {
$s = preg_replace($GLOBALS['_rewriteRulesTo1'],$GLOBALS['_rewriteRulesFrom1'], $s);
for($i=0; $i<count($GLOBALS['_rewriteRulesFrom']); $i++) {
$s = preg_replace( '/('.preg_quote(ICMS_URL,'/').'|"|\')'.preg_quote($GLOBALS['_rewriteRulesTo'][$i],'/').'/' , "\\1".$GLOBALS['_rewriteRulesFrom'][$i] , $s ) ;
}
return $s;
}
if (empty($_SERVER['REDIRECT_URL']) || ($_SERVER['REDIRECT_URL'] == $_SERVER['REQUEST_URI'])) {
if (empty($_SERVER['REDIRECT_REDIRECT_STATUS'])) {
if (($_changer_url=modules_changer('"'.$_SERVER['REQUEST_URI'].'"')) != '"'.$_SERVER['REQUEST_URI'].'"') {
header('Location: ' . str_replace('"','',$_changer_url));
}
}
}
$_SERVER['REQUEST_URI'] = str_replace( $GLOBALS['_rewriteRulesFrom'],$GLOBALS['_rewriteRulesTo'], @$_SERVER['REQUEST_URI'] ) ;
$_SERVER['HTTP_REFERER'] = str_replace($GLOBALS['_rewriteRulesFrom'], $GLOBALS['_rewriteRulesTo'], @$_SERVER['HTTP_REFERER'] ) ;
ob_start( 'modules_changer' ) ;
Für "xcgal" als Startmodul ist nach meinen Recherchen folgender Eintrag nötig:
# To deal with redirecting to module at startup
RewriteCond %{REQUEST_URI} !^/.+/
RewriteRule ^$ /modules/xcgal/ [L]
# to include root index.(php|html|htm) files
RewriteCond %{REQUEST_URI} !^/.+/
RewriteRule ^(index(.php|.html|.htm))?$ /modules/xcgal/ [L]
Das klappt auch soweit, ABER: Die Links zu den Alben oder einzelnen Fotos funkionieren nicht mehr richtig. Oder Icons aus dem Programm fehlen, weil eben ein falscher Pfad rauskommt.
Aus
http://www.meinedomain.com/uploads/foto/mx/foto2009/63.jpg
wird
http://www.meinedomain.com/uploads/mx/foto2009/63.jpg
und der Link geht "ins Leere".
Welchen Eintrag hab ich da falsch? Meine rewrite Kenntnisse sind noch ziemlich gering und basieren eigentlich noch auf copy & paste. Hat jemand einen Tip?
DANKE SAGEN: Für das Dokument, mein aller besten Dank an @Feichtl. Er hat mit viel Mühe die Infos zusammen gesammelt und uns bereit gestellt.