Anzeige

 RewriteRule Query wird nicht erstellt

guenter024

Erfahrenes Mitglied
#1
Hallo,
ich möchte mit mod_rewrite eine Regel erstellen.
Beim Testen auf localhost funktioniert alles einwandfrei.
Nach dem Hochladen auf den 1und1-Server geht nur noch die Regel 1, ab Regel 2 geht nichts mehr.
Code:
Code:
RewriteEngine on
RewriteBase /

#Regel 1 funktioniert noch, example.php wird verarbeitet
RewriteRule ^example$               example.php [L,NC,QSA]

#ab Regel 2 funktioniert es nicht mehr
RewriteRule ^example/(.*)$          example.php?path1=$1 [L,NC,QSA]
RewriteRule ^example/(.*)/(.*)$     example.php?path1=$1&path2=$2 [L,NC,QSA]
example.php wird zwar weiterhin angezeigt, aber $_SERVER['QUERY_STRING'] bleibt auf dem Webserver leer.
Hat jemand eine Idee woran dies liegen könnte?

Ich hoffe jemand weiß Rat.

Liebe Grüße

PS:
Konfiguration localhost: Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/7.0.13
Konfiguration 1und1: laut 1und1 ebenfallls Apache 2.4(?) sowie PHP 7.1.12
 

guenter024

Erfahrenes Mitglied
#2
Folgendes ist mir aufgefallen:
Die $_SERVER['REDIRECT_URL'] unterscheidet sich wie folgt:

webhost:
/example.php/path1/path2

localhost:
/example/path1/path2

Woher kommt das?

PS: Die $_SERVER['REQUEST_URI'] wird aber wieder bei beiden Servern identisch verarbeitet...
 
Zuletzt bearbeitet:

guenter024

Erfahrenes Mitglied
#3
lol.
jetzt habe ich einfach mal eine test.php erstellt und hochgeladen und mit example.com/test aufgerufen und die Seite wird einfach ausgeliefert.
Was stimmt da beim 1und1 Server nicht?
 

EuroCent

KlappStuhl 2.0
#4
htaccess die oben steht, ist es auch die die du hochgeladen hast, oder sind es nur beispiele?

PS: Versuch mal ohne QSA ^^

Schau dir meine mal an :)

Code:
<IfModule mod_rewrite.c>
    RewriteEngine on

    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{QUERY_STRING} ^(.*)$

    RewriteRule ^Home$ index.php [L]
    RewriteRule ^Home$ index.php?site=home [L]

    RewriteRule ^Hilfe$ index.php?site=faq [L]

    RewriteRule ^Einloggen$ index.php?site=login [L]
    RewriteRule ^Ausloggen$ index.php?site=logout [L]

    RewriteRule ^Kontakt$ index.php?site=contact [L]

    RewriteRule ^Registrieren$ index.php?site=register [L]

    RewriteRule ^Passwort-Vergessen$ index.php?site=passwd [L]
    RewriteRule ^Passwort-Vergeben$ index.php?site=passnew [L]
    RewriteRule ^Passwort-Vergeben/(.*)/(.*)$ index.php?site=passnew&mail=$1&sid=$2 [L]

    RewriteRule ^Profil-Bearbeiten$ index.php?site=edit_profile [L]

    RewriteRule ^Changelog$ index.php?site=changelog [L]
</IfModule>
 

guenter024

Erfahrenes Mitglied
#5
Hallo
danke für deine Antwort.
QSA hat damit aber erstmal nichts zu tun.
Das Problem habe ich ja im Prinzip schon gefunden -> siehe
Die $_SERVER['REDIRECT_URL'] unterscheidet sich wie folgt:

webhost:
/example.php/path1/path2

localhost:
/example/path1/path2
mir fehlt nur noch die Lösung...

Ich weiß nicht woher dieses .php kommt, wenn ich /example/path1/path2 aufrufe und dann daraus /example.php/path1/path2 wird.

PS: der Code ist ein Beispiel.

PS PS
Habe herausgefunden, die .htaccess hat überhaupt keine Auswirkung darauf, es ist also zunächst nicht ein .htaccess-Problem. Die Datei test.php wird bei Aufruf von example.com/test auch ausgegeben, wenn überhaupt keine .htaccess existiert.
Ausgabe der $_SERVER["REDIRECT_URL"] lautet /test.php
Wo bzw. wie kann man das abstellen?
 
Zuletzt bearbeitet:

guenter024

Erfahrenes Mitglied
#8
muss das Thema wieder rausholen, das war nicht die Lösung für mein Problem.

Der Server macht immer noch /example/path1/path2 zu /example.php/path1/path2 -> es wird kein Query von der .htaccess erstellt wie example.php?path1=$1&path2=$2 weil das pattern nicht stimmt.
Irgendwo ist da der Wurm drin.
Dabei wäre es doch eigentlich ganz einfach :confused:
Das verrückte ist, localhost mit xampp macht alles wie gewünscht, da funktioniert alles.

Wenn ich jetzt nicht bald eine Lösung finde gehe ich in Rente ... :rolleyes:
 

EuroCent

KlappStuhl 2.0
#9
Naja localhost kannst Du auch nicht wirklich vergleichen, da in der Regel oft per XAMPP alles offen steht. :)
Das heisst Du müsstest via phpinfo() prüfen

Ich kann dir jedoch leider nicht sagen welche Einstellungen/Mods oder Faktoren da eine Rolle spielt oder das Mod_Rewrite... :)
 

EuroCent

KlappStuhl 2.0
#13
Hast Du denn mal geprüft wie es beim Localhost unter phpinfo() und dann auf deinem Hosting?
Durchaus möglich dass dein Hoster etwas aktivieren/deaktivieren muss.
 
Anzeige

Neue Beiträge

Anzeige