Page 1 of 1

Anchor links funktionieren nicht wegen Pretty Urls und rewrite

Posted: Tue Dec 14, 2010 10:54 am
by pawi
Hallo!

Durch die Verwendung von Pretty URLs funktionieren mein Anchor-Links nicht.
(ich verwende CMSMS 1.8.2)

Innerhalb z.B. www.domain.eu/unterordner/seite.html möchte ich mit #anker1 verlinken, jedoch wird der Link immer zu

www.domain.eu#anker1 und verlässt somit meine Seite.

Ich habe bereits verschiedene Optionen des Rewriting in der config.php versucht

Code: Select all

$config['url_rewriting'] = mod_rewrite;
$config['url_rewriting'] = internal;
$config['url_rewriting'] = none;
$config['url_rewriting'] = true;
jedoch ohne sichtliche Veränderung.

Meine .htaccess sieht so aus:

Code: Select all

# BEGIN CMSMS and Rewrite Rules
# Make sure you have Options FollowSymLinks
# and Allow on

RewriteEngine On

# Might be needed in a subdirectory
#RewriteBase /

# URL Filtering helps stop some hack attempts
#IF the URI contains a "http:"
RewriteCond %{QUERY_STRING} http\: [OR]
#OR if the URI contains a "["
RewriteCond %{QUERY_STRING} \[ [OR]
#OR if the URI contains a "]"
RewriteCond %{QUERY_STRING} \] [OR]
#OR if the URI contains a "<__script__>"
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
#OR script trying to set a PHP GLOBALS variable via URL
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
#OR any script trying to modify a _REQUEST variable via URL
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^.*$ - [F,L]
# END Filtering

# CMSMS Rewriting
# Set assume mod_rewrite to true in config.php and clear CMSMS cache
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?page=$1 [QSA]
# END CMSMS

# END Rewrite rules

Weiß jemand, wie ich die Domain den Ankern wegbekomme?
Also wie ich meine Links dazu bringe, so auszusehen

Code: Select all

<a href="#anker1">LINK</a>
anstatt

Code: Select all

<a href="http://www.domain.eu#anker1">LINK</a>
?

Danke!!

pawi

Re: Anchor links funktionieren nicht wegen Pretty Urls und rewrite

Posted: Tue Dec 14, 2010 12:17 pm
by nockenfell

Re: Anchor links funktionieren nicht wegen Pretty Urls und rewrite

Posted: Tue Dec 14, 2010 5:22 pm
by pawi
Danke für den Link! Ich verstehe leider nur nicht, was da beschrieben wird..

Wo befindet sich die preparse-Datei, auf die sich der durchgestrichene Text bezieht? Und wohin soll ich das PHP-Skript kopieren, das cyberman gepostet hat? Ich habe das an den Seitenanfang gesetzt und bekomme trotz {literal}-Tag lauter Smarty Errors. Auch wenn ich einen benutzerdefinierten Tag für das Skript anlege.

Ich muss noch ergänzen, dass ich keine Lösung verwenden kann, die die Seiten-URL vornedranstellt, da die Anker auf einen jquery Slider verweisen. Dieser soll natürlich sliden, daher soll die Seite nicht neu geladen werden.

pawi

Re: Anchor links funktionieren nicht wegen Pretty Urls und rewrite

Posted: Tue Dec 14, 2010 9:07 pm
by cyberman
pawi wrote: Und wohin soll ich das PHP-Skript kopieren, das cyberman gepostet hat?
In den /plugin-Ordner ... wird dann automatisch ausgeführt ;).

Re: Anchor links funktionieren nicht wegen Pretty Urls und rewrite

Posted: Thu Dec 16, 2010 9:03 am
by pawi
Danke, cyberman. Ich hab das jetzt mal gemacht, diesen Code

Code: Select all

<?php
function smarty_cms_prefilter_replaceanchor($tpl_source, &$smarty)
{
   return preg_replace('/<a href="#([A-Za-z0-9\\._-]+)">(.+)<\/a>/', "{anchor anchor='$1' text='$2'}", $tpl_source);
}
?>
abgespeichert als "prefilter.replaceanchor.php" und direkt in den Plugins-Folder kopiert.
Leider verändern sich meine Anker immernoch nicht :( Ausführbar ist das Skript theoretisch, Rechte sind gesetzt.

Habe ich irgendetwas vergessen?
Danke für geduldige Hilfe hier :)

pawi