Zur Navigation

Joomla SEF URL und Umleitung

1 Markus R. (Gast)

Hi Zusammen,

ich hätte ein änliches anliegen. Ich habe eine Joomla Installation bei welcher SEF Urls generiert werden.

Nun funktioniert mein Aufruf über folgende URL nicht mehr
index.php?option=com_ccnewsletter&task=activate&code=65658fde58ab3c2b6e5132a39fae7cb9

Ich habe nun versucht über Eure Anleitung folgende URL daraus zu machen:
newsletter-anmelden.html?option=com_ccnewsletter&task=activate&code=65658fde58ab3c2b6e5132a39fae7cb9

Aber irgenwie greift die Umleitung nicht.

Mein htaccess Code:

RewriteCond %{QUERY_STRING} ^option=com_ccnewsletter&task=activate&code=*$
RewriteRule ^index\.php$ /newsletter-anmelden.html [R=301,L]

habe es auch schon so versucht:
^option=com_ccnewsletter$
RewriteRule ^index\.php$ /newsletter-anmelden.html [R=301,L]

11.09.2018 09:12

2 Markus R. (Gast)

Ich habe nun über folgenden Code

RewriteCond %{REQUEST_URI} ^/index\.php$
RewriteCond %{QUERY_STRING} com_ccnewsletter
RewriteRule ^(.*)$ https://www.example.com/newsletter-aktivieren.html [R=302,L]

dies URL hinbekommen

newsletter-aktivieren.html?option=com_ccnewsletter&task=activate&code=65658fde58ab3c2b6e5132a39fae7cb9

Allerdings kommt mir nun eine Meldung, dass die Seite zu oft weitergeleitet wird.

Wie kommt das denn?

11.09.2018 09:28 | geändert von Jörg: 11.09.2018 09:39

3 Jörg Kruse

Ich habe eine Joomla Installation bei welcher SEF Urls generiert werden.

Dann haben die SEF-URLs möglicherweise auch einen Codeabschnitt in der .htaccess Datei, der mit deinen Weiterleitungs-Code jetzt Ping-Pong spielt? Am besten mal den kompletten Code der .htaccess Datei posten :)

11.09.2018 09:36

4 Markus R. (Gast)

Die ganze htaccess kann ich nicht übermitteln. Ich versuche es mal stückchenweise mit nur den Rewrites

RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

RewriteCond %{QUERY_STRING} (^|&)tmpl=(component|system) [NC]
RewriteRule .* - [L]
RewriteCond %{QUERY_STRING} (^|&)t(p|emplate|mpl)= [NC]
RewriteRule .* - [F]

RewriteCond %{REQUEST_URI} ^/index\.php$
RewriteCond %{QUERY_STRING} com_ccnewsletter
RewriteRule ^(.*)$ /newsletter-aktivieren.html [R=302,L]

11.09.2018 09:59

5 Markus R. (Gast)

Oder hängt es mit diesem Code zusammen?

RewriteCond %{REQUEST_METHOD} GET
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=http:// [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=(\.\.//?)+ [OR]
RewriteCond %{QUERY_STRING} [a-zA-Z0-9_]=/([a-z0-9_.]//?)+ [NC]
RewriteRule ^(.*)$ - [R=404,L]

11.09.2018 10:03

6 Markus R. (Gast)

Ich habe folgenden Code mal ausgeblendet dann kommt kein Weiterleitungsfehler mehr, aber eine 404 Fehler, da dadurch das Joomla SEF nicht mehr funktioniert.

## Begin - Joomla! core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

11.09.2018 10:09

7 Jörg Kruse

Deine Weiterleitung sollte ganz an den Anfang gesetzt werden. Das L-Flag sorgt dann dafür, dass keine Rules danach angewandt werden. Die "Joomla! core SEF Section" sorgt andernfalls nämlich dafür, dass newsletter-aktivieren.html vor der Weiterleitung (in einem zweiten Durchlauf von mod_rewrite) wieder auf index.php rewritet wird. Und dann geht das ganze wieder von vorne los...

11.09.2018 10:25 | geändert: 11.09.2018 10:25

8 Markus R. (Gast)

Hi Jörg,

danke schon mal. Macht Sinn.

Habe es aber nun so umgestellt

RewriteCond %{REQUEST_URI} ^/index\.php$
RewriteCond %{QUERY_STRING} com_ccnewsletter
RewriteRule ^(.*)$ /newsletter-aktivieren.html [R=302]

## Begin - Joomla! core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Kommt leider immer noch der Umleitungsfehler.

11.09.2018 10:36

9 Jörg Kruse

Das L(ast)-Flag fehlt:

RewriteRule ^(.*)$ /newsletter-aktivieren.html [R=302,L]

(das hattest du vorher ja noch drin)

... und 302 sollte ggf. noch durch 301 ersetzt werden, es sei denn die Weiterleitung ist temporär

11.09.2018 10:43

10 Markus R. (Gast)

Danach kommen halt noch andere Anweisungen

## Begin - Rewrite rules to block out some common exploits.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule .* index.php [F]

RewriteCond %{REQUEST_URI} ^/index\.php$
RewriteCond %{QUERY_STRING} com_ccnewsletter
RewriteRule ^(.*)$ /newsletter-aktivieren.html [L,R=301]

RewriteCond %{HTTP_HOST} ^test.de$
RewriteRule ^(.*)$ https://www.test.de/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^test.us$
RewriteRule ^(.*)$ https://www.test.us/$1 [L,R=301]

## Begin - Joomla! core SEF Section.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_URI} !^/index\.php
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]

Muss ich dann je Block das L setzen, oder nur in der allerletzten Rule?

11.09.2018 10:50