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]
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?
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 :)
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]
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]
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]
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...
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.
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
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?