URL Rewrite mit .htaccess Datei
Moin moin,
momentan probiere ich mittels einer .htaccess Datei meine URL umzuschreiben, damit diese im Browser ansprechender wirkt.
Beispiel: http://meinewebsite.com/index.php?l=de soll zu http://meinewebsite.com/de werden, http://meinewebsite.com/index.php?l=en zu http://meinewebsite.com/en usw.
Zu Testzwecken habe ich dafür einfach eine neue Ubuntu Server (20.04) VM aufgesetzt mit einem Apache Webserver(2.4.41) und PHP (7.4).
Die Standard-Konfigurationsdatei vom Apache habe ich entsprechend angepasst, damit .htaccess Dateien greifen:
(/etc/apache2/sites-available/000-default.conf)
Das "Rewrite-Modul" für den Apache wurde aktiviert und ist geladen.
Im DocumentRoot (/var/www/html) liegen nun folgende Dateien:
-index.php
-.htaccess
Inhalt der index.php:
Zwei Schaltflächen um entsprechend den Sprachparameter in der URL zu ändern.
Inhalt der .htacces
Meiner Erkenntnis nach sollte die RewriteRule eigentlich für das Verhalten sorgen welches ich am Anfang beschrieben habe. Leider passiert mit der URL aber nix.
Dass die .htaccess Datei überhaupt berücksichtigt wird habe ich mit einem deny from all schon getestet
Jemand eine Idee wo hier der Fehler liegt ?
momentan probiere ich mittels einer .htaccess Datei meine URL umzuschreiben, damit diese im Browser ansprechender wirkt.
Beispiel: http://meinewebsite.com/index.php?l=de soll zu http://meinewebsite.com/de werden, http://meinewebsite.com/index.php?l=en zu http://meinewebsite.com/en usw.
Zu Testzwecken habe ich dafür einfach eine neue Ubuntu Server (20.04) VM aufgesetzt mit einem Apache Webserver(2.4.41) und PHP (7.4).
Die Standard-Konfigurationsdatei vom Apache habe ich entsprechend angepasst, damit .htaccess Dateien greifen:
(/etc/apache2/sites-available/000-default.conf)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
**<Directory /var/www/html>
AllowOverride all
</Directory>**
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Das "Rewrite-Modul" für den Apache wurde aktiviert und ist geladen.
Im DocumentRoot (/var/www/html) liegen nun folgende Dateien:
-index.php
-.htaccess
Inhalt der index.php:
<?php
echo '<span style="margin: 15px;"><a href="index.php?l=de">DE</a></span>';
echo '<span style="margin: 15px;"><a href="index.php?l=en">EN</a></span>';
?>
Zwei Schaltflächen um entsprechend den Sprachparameter in der URL zu ändern.
Inhalt der .htacces
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ index.php?l=$1 [L]
Meiner Erkenntnis nach sollte die RewriteRule eigentlich für das Verhalten sorgen welches ich am Anfang beschrieben habe. Leider passiert mit der URL aber nix.
Dass die .htaccess Datei überhaupt berücksichtigt wird habe ich mit einem deny from all schon getestet
Jemand eine Idee wo hier der Fehler liegt ?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1258628512
Url: https://administrator.de/forum/url-rewrite-mit-htaccess-datei-1258628512.html
Ausgedruckt am: 30.04.2025 um 05:04 Uhr
3 Kommentare
Neuester Kommentar
Servus.

Ebenso hier ein Fehler:
Die Sternchen musst du da schon weg machen.
Das gewünschte kannst du in einer .htaccess hiermit erreichen
Siehe Beispiel
https://htaccess.madewithlove.be?share=2a7a20c6-c979-4d85-b1e9-c8a978768 ...
Wie immer ist die Doku dein Freund
https://httpd.apache.org/docs/current/mod/mod_rewrite.html
Grüße Uwe
Meiner Erkenntnis nach sollte die RewriteRule eigentlich für das Verhalten sorgen welches ich am Anfang beschrieben habe. Leider passiert mit der URL aber nix.
Nein das tut es so leider überhaupt nicht RewriteRule ^(.*)$ index.php?l=$1 [L]
Diese Regel besagt schreibe in diesem Verzeichnis alles um und hänge an index.php?l= alles an was im URL-Pfad steht, indem fall also "index.php", solche Sachen führen im schlimmsten Fall zu einem Loop.Ebenso hier ein Fehler:
**<Directory /var/www/html>
AllowOverride all
</Directory>**
Das gewünschte kannst du in einer .htaccess hiermit erreichen
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/index\.php$ [NC]
RewriteCond %{QUERY_STRING} l=([a-z]+) [NC]
RewriteRule .* /%1 [R=301,L,QSD]
Siehe Beispiel
https://htaccess.madewithlove.be?share=2a7a20c6-c979-4d85-b1e9-c8a978768 ...
Wie immer ist die Doku dein Freund
https://httpd.apache.org/docs/current/mod/mod_rewrite.html
Grüße Uwe