doritos
Goto Top

Htaccess URL prüfen und umlenken

Hallo,

ich versuche gerade für Joomla die URL mit bestimmten Inhalten herauszufiltern und umzuleiten. Dies soll über die .htaccess geschehen.

Bspw. die URL: https://meins.de/index.php/component/users/?view=reset&Itemid=121

Soll herausgefiltert werden und schlicht auf den Host umgeleitet werden.
Alles mit dem Teil "components/users" in der URL soll umgeleitet werden.

Bedient habe ich im im Netz, jedoch funktioniert es nicht:

RewriteCond %{REQUEST_URI} !^/administrator/.*
# Aufrufe in denen com_users vorkommt rausfischen
RewriteCond %{QUERY_STRING} (^|&) option=(com_users) 
# wenn Domain nicht gleich www.domain.de dann führe RewriteRule aus
# auf die Startseite zurückleiten
RewriteRule ^ https://meins.de

Soweit ich sehe wird "components/users" herausgefiltert, den Rest bleibt jedoch und die neue URL wird zu https://meins.de/?view=reset&Itemid=121

Gerne würde ich nur auf https://meins.de umleiten.

Kann mir jemand die Lösung schreiben?

Content-ID: 359792

Url: https://administrator.de/contentid/359792

Ausgedruckt am: 22.11.2024 um 03:11 Uhr

Kryolyt
Kryolyt 04.01.2018 um 02:55:32 Uhr
Goto Top
Eine kleine Anleitung die ich gefunden und frei übersetzt habe:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?path=$1 [NC,L,QSA]

Diese .htaccess sollte sich in deinem webroot ordner befinden. Oder zumindest in dem ordner in der sich die index befindet auf die letztendlich umgeleitet werden soll.

Mit ^(.*)$ werden alle unterordner rekursiv in diese Regel eingebunden. Passe das index.php in der letzten Zeile deinem Fall an.
NC steht für NoCase, damit wird groß-kleinschreibung ignoiert.
L steht für last, das signalisiert, dass die derzeitgen rewrite-konditionen zu deinem Ende kommen, daher sollte die Zeile am Ende stehen.
WICHTIG! Falls du query string's (wie in deinem beispiel) mit weiterleiten willst, musst du QSA mit reinnehmen. Damit wird aber ?view=reset&Itemid=121 auf index.php gewirkt. Wenn du das nicht möchtest, lass QSA raus.
Doritos
Doritos 04.01.2018 um 10:28:46 Uhr
Goto Top
Danke Kryolyt,

mit deinem Vorschlag nähere ich mich etwas meinem Ziel.
Direkt ohne dem QSA verwendet, passiert bei der Abfrage nichts und das Ergebnis ist:
https://meins.de/index.php?path=index.php/component/users/

Nach dem Versuch dies anzupassen komme ich auf:
RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) /index.php? [NC, R=301]

Testen tue ich es mit: http://htaccess.mwl.be/
Das Ergebnis (ohne R=301) ist die gewünschte URL
https://meins.de/index.php
(Mit der index.php kann ich leben.)

Jedoch läuft es auf dem Server nicht.
Mit R=301 werden die Seiten nicht mehr angezeigt, es gibt einen Server-Fehler 500
Ohne R=301 passiert wieder nichts.

Hat jemand eine Idee was hier oder auf dem Server falsch läuft?
Kryolyt
Kryolyt 04.01.2018 aktualisiert um 10:42:17 Uhr
Goto Top
Wenn du R=301 weglässt musst du soweit ich weiß L einsetzen "[NC, L]" Hast du weitere Rewrite regeln unterhalt dieser Einträge?
Doritos
Doritos 04.01.2018 um 10:48:38 Uhr
Goto Top
Es ist die einzige Regel, aber auch mit der Last-Option komme ich nicht weiter.

Praktisch folgt in der .htaccess nur noch
ErrorDocument 404 /fehlerseiten/404.php

# php -- BEGIN cPanel-generated handler, do not edit
# Legen Sie das Paket „ea-php56“ als Standardprogrammiersprache „PHP“ fest.
<IfModule mime_module>
  AddType application/x-httpd-ea-php56 .php .php5 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

Mehr steht da nicht drin.
Kryolyt
Kryolyt 04.01.2018 um 11:04:55 Uhr
Goto Top
Ich wüsste leider auch nicht weiter. Error 500 deutet in der regel auf einen internen Fehler hin. Was sagt denn apache.log wenn bei dir Fehler 500 kommt? (Mit R=301)
Doritos
Doritos 04.01.2018 um 11:31:17 Uhr
Goto Top
Das ist nicht mein Server, ich wüsst nicht wie ich das einsehen könnte.
Kryolyt
Kryolyt 04.01.2018 um 11:43:38 Uhr
Goto Top
Schade, ohne zugriff auf die Fehlerlogs ist es immer schwer auf eine genaue Fehlerquelle zu kommen. Es könnte ein "einfacher" syntaxfehler in .htaccess sein. Ich wüsste aber leider nicht mehr weiter. Vielleicht/ hoffentlich meldet sich noch jemand mit mehr Ahnung in der materie.
Doritos
Doritos 04.01.2018 um 12:03:25 Uhr
Goto Top
Dank' dir schon mal bis hier hin.
BassFishFox
BassFishFox 04.01.2018 um 18:42:42 Uhr
Goto Top
Halloele,

Ewig her wo ich mal mit zu tun hatte. Ich hatte mich damals an diese "Anleitung" gehalten, als ich die Umleitung brauchte.
Htaccess URL prüfen und umlenken

RewriteEngine On
        RewriteCond %{HTTP_HOST} !^www.example.com$ [NC]
        RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

Checke das mal ab.

BFF
Doritos
Doritos 04.01.2018 um 23:50:23 Uhr
Goto Top
Danke für den Tipp.
Funktioniert leider nicht.

Ich werde mir mal Zeit nehmen und meinen Provider kontaktieren und um Hilfe bitten.