Ich nochmal kurz: Habs hinbekommen. Ich weiß, dass es nicht die eleganteste Lösung ist, aber sie funktioniert.
Zwei Ergänzungen sind erforderlich:
1. in der .htaccess:
Code:
RewriteCond %{HTTP_REFERER} !^http://www\.domain\.de [NC]
RewriteCond %{REQUEST_URI} ^/([^/]+)/([^/]+)/([^/]+)\.html
RewriteCond %{REQUEST_URI} !^/bilder/(.*)/(.*)\.html
RewriteCond %{HTTP_REFERER} !^http://www\.domain\.de/component/content/article/
RewriteRule ([^/]+)/([^/]+)/([^/]+)\.html$ http://www.domain.de/component/content/article/$3\.html [R=301,L]
(Zeile 3 ist um URI von einer Komponente zu schützen)
2. in der /templates/nametemplate/html/com_content/article/default.php (als TemplateOverride):
Code:
<?php
if (stristr($_SERVER['REQUEST_URI'],$this->article->readmore_link)==false and stristr($_SERVER['HTTP_REFERER'],'/component/content/article')==false and $_SERVER['HTTP_REFERER']!==false)
{
Header("Location: http://".$_SERVER['HTTP_HOST'].$this->article->readmore_link.'/', true, 301);
exit;
} ?>
...ganz oben einfügen. Danach werden alle externen Links, auch wenn sie auf
Code:
http://www.domain.de/egalwas/egalwas/id-articlealias.html
zeigen am Ziel ankommen. Einziger Wehrmutstropfen: An die Links von extern wird ein Slash angehängt. Könnte bezüglich doppeltem Content schlecht sein. Aber man muss das ja nicht ewig so lassen. Wenn ich den angehängten Slash weglasse ist es wieder eine unendliche Weiterleitung...
Lesezeichen