Folgendermaßen sieht der relevante Teil meiner .htaccess aus, sodass Rubrikadressen immer die Form
http://www.domain.tld/Rubrikverzeichnis/Rubrikname.html haben:
Code: Alles auswählen
RewriteEngine on
# Rewriting nicht für Modulverzeichnisse
RewriteCond %{REQUEST_URI} !^/mod_
# Hier die "legalen" Rubrik-Verzeichnisse auflisten, um Soft-404-Fehler zu vermeiden (ODER-verküpft, wenn mehrere!)
RewriteCond %{REQUEST_URI} ^/Kontakt [OR]
RewriteCond %{REQUEST_URI} ^/cms
# Rewriting nicht für Unterverzeichnisse der Rubrik-Verzeichnisse
RewriteCond %{REQUEST_URI} !^/[^_].+/.*/
# Beachte: Rewriting nicht für alle Verzeichnisse, die mit Unterstrich beginnen - wird _rubric verwendet, dann eckige Klammer in obiger RewriteCond und der RewriteRule entfernen
RewriteRule ^([^_].+)/(.+)\.html$ /$1/index.php?rubric=$2
RewriteCond %{REQUEST_URI} !^/mod_
# mod_form-Verzeichnis "Kontakt" muss hier mit angegeben werden, damit Captcha sichtbar
RewriteCond %{REQUEST_URI} !^/Kontakt
RewriteCond %{REQUEST_URI} ^/[^_].+/.*/
RewriteRule ^(.*)$ http://www.domain.tld/404.php [R=404]
Um "Duplicate Content" zu vermeiden, muss dafür gesorgt werden, dass ConPresso selbst und die Module nur Rubriklinks in der Form
http://www.domain.tld/Rubrikverzeichnis/Rubrikname.html erzeugen.
Hier ein paar Beispiele für Änderungen, die ich bei CPO 4.0.x und Modulen einsetze:
Code: Alles auswählen
..\_editor\editor.php
=====================
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Anfang *****
/* Originalzeile
htmlspecialchars(BASE_ABS.$db->v('directory').'/index.php?rubric='.urlencode($db->v('name'))),
geändert zu */
htmlspecialchars(BASE_ABS.$db->v('directory').'/'.urlencode($db->v('name')).'.html', ENT_COMPAT, 'ISO-8859-15'),
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Ende *****
..\_include\form_fields.inc.php
===============================
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Anfang *****
/* Originalzeile
htmlspecialchars(BASE_ABS.$db->v('directory').'/index.php?rubric='.urlencode($db->v('name'))),
geändert zu */
htmlspecialchars(BASE_ABS.$db->v('directory').'/'.urlencode($db->v('name')).'.html', ENT_COMPAT, 'ISO-8859-15'),
// ********** Links auf Rubriken mit mod_rewrite ********** Teil 1/1 ***** Ende *****
..\_include\parser_r_value.inc.php
==================================
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Anfang *****
/* Originalzeilen:
$_t = sprintf('<a href="../%s/index.php?rubric=%s">%s</a>',
htmlspecialchars($content[$key]['rubricdirectory']),
urlencode($content[$key]['rubricid']),
htmlspecialchars($content[$key]['rubrictitle'])
);
ersetzt durch: */
$_t = sprintf('<a href="../%s/%s.html">%s</a>',
htmlspecialchars($content[$key]['rubricdirectory'], ENT_COMPAT, 'ISO-8859-15'),
urlencode($content[$key]['rubricname']),
htmlspecialchars($content[$key]['rubricname'], ENT_COMPAT, 'ISO-8859-15')
);
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Ende *****
..\_include\printnavigation.inc.php
===================================
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Anfang *****
/* Originalzeile:
$link = BASE_ABS.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
ersetzt durch: */
$link = BASE_ABS.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Ende *****
..\mod_search\includes\parser.inc.php
=====================================
// ********** Modifikation für SEO-gemäße Suchergebnis-Links ********** Teil 1/1 ***** Anfang *****
/* Die Zeile:
$link = BASE_REL . $rubrics[$v['rubric_id']]['directory'] . '/index.php?rubric=' . urlencode($rubrics[$v['rubric_id']]['name']) . '&nr='.(int)$v['nr'].'#'.(int)$v['nr'];
ersetzt durch: */
$link = htmlspecialchars(BASE_REL . $rubrics[$v['rubric_id']]['directory'] . '/' . urlencode($rubrics[$v['rubric_id']]['name']) . '.html', ENT_COMPAT, 'ISO-8859-15') . '#'.(int)$v['nr'];
// ********** Modifikation für SEO-gemäße Suchergebnis-Links ********** Teil 1/1 ***** Ende *****
..\mod_breadcrumbnavi\_include\function.php
===========================================
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Anfang *****
/* Originalzeile:
$link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
ersetzt durch: */
$link = BASE_URL.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Rubrik-Link für mod_rewrite erzeugen ********** Teil 1/1 ***** Ende *****
..\mod_sitemap\functions.inc.php
================================
// PATH_INFO disabled
if (isset($v['rubric']['directory']) && !$GLOBALS['cpoSystem']['PATH_INFO']) {
// ********** Modifikation für SEO-gemäße Links ********** Teil 1/1 ***** Anfang *****
/* Die Zeile:
$link = BASE_URL.$v['rubric']['directory'].'/index.php?rubric='.urlencode($v['rubric']['name']);
ersetzt durch: */
$link = BASE_URL.$v['rubric']['directory'].'/'.urlencode($v['rubric']['name'].'.html');
// ********** Modifikation für SEO-gemäße Links ********** Teil 1/1 ***** Ende *****
}