.htaccess mit mehreren GET Parametern

03/01/2018 22:19 .Abraxas#1
Guten Abend zusammen,
ich möchte gerne die URL meiner Homepage mit htaccess formatieren. Da sind mehrere Parameter enthalten.
Beispiel URL: localhost/tafellauf/index.php?lang=de&page=home
soll zu localhost /tafellauf/de/home
werden. Die Übergabe der Parameter so funktioniert gut. Das Multilang-System funktioniert einwandfrei und die page Variable wird auch ohne Probleme übergeben. Doch jetzt kommt das Problem. Wenn ich nur die lang angebe, funktionieren sämtliche CSS Anweisungen wie sie sollen. Das selbst ist ja gut. Doch sobald ich noch den Namen einer Page übergebe, also "/de/home" oder ähnliches, funktionieren die Übersetzungen immer noch und die page Variable wird auch ausgegeben, wie sie soll, doch sämtliche CSS Anweisungen sind verschwunden bzw. alles wird ohne CSS angezeigt. Erkennt einer den Fehler in meiner htaccess Datei?
Code:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?lang=$1&page=$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?lang=$1 [L]
Grüße,

Abraxas
03/02/2018 11:49 florian0#2
Ich nehme an der Fehler ist nicht deine htaccess-Datei sondern dein Pfad zur CSS. Wenn der nämlich relativ ist, hast du mit deinen "virtuellen" Ordnern dafür gesorgt, dass die CSS Datei nicht mehr gefunden wird.

Code:
<link rel="stylesheet" href="main.css">
zu

Code:
<link rel="stylesheet" href="/main.css">
03/02/2018 14:14 .Abraxas#3
Das dachte ich mir am Anfang auch. Doch wenn ich nur einen Parameter übergebe, also den ersten, ist ja alles mit CSS formatiert. Nur wenn ich einen zweiten Parameter an den ersten dranhänge, ist die Formatierung weg.
03/02/2018 14:30 Devsome#4
Quote:
Originally Posted by .Abraxas View Post
Das dachte ich mir am Anfang auch. Doch wenn ich nur einen Parameter übergebe, also den ersten, ist ja alles mit CSS formatiert. Nur wenn ich einen zweiten Parameter an den ersten dranhänge, ist die Formatierung weg.
Kannst ja mal in der Entwickler Console nach schauen was er dir so sagt. Dort auch mal schauen ob wirklich die *css eingebunden worden ist.
03/02/2018 20:24 iMostLiked#5
Quote:
Originally Posted by .Abraxas View Post
Das dachte ich mir am Anfang auch. Doch wenn ich nur einen Parameter übergebe, also den ersten, ist ja alles mit CSS formatiert. Nur wenn ich einen zweiten Parameter an den ersten dranhänge, ist die Formatierung weg.
Das liegt daran, dass wenn du
Code:
localhost/de
aufrufst, es nicht als virtueller Ordner verarbeitet wird, sondern als Datei bzw. Parameter der index.php. So gesehen befindest du dich immer noch im Hauptverzeichnis /

Wenn du aber mal
Code:
localhost/de/
aufrufst, funktioniert nichts mehr, weil du dich in einem virtuellen Ordner befindest, obwohl du keinen zweiten Parameter angegeben hast. Selbiges gilt natürlich für
Code:
localhost/de/home
localhost/de/home/
Mach es so, wie @florian0 sagte.