.html entfernen via .htaccess, nur wie?
Hallo,
Ich möchte mit der .htaccess Datei die Dateiendungen wie ".html" oder ".php" vollständig entfernen, jedoch funktioniert das nicht, ich habe mich schon mit mehreren Codes rumgeschlagen und keins davon funktioniert.
Zur Info:
Ich nutze Debian 9.3, Apache2 & PHP7.0
4 Antworten
#Für PHP
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
#Für HTML
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [QSA,L]
Echt merkwürdig. Habs eben selber getestet und funktioniert einwandfrei.
Starte mal deinen Server neu, evtl. hilft das.
Nun steht dort, dass ich keine Rechte habe, um diese Seite zu benutzen.
Wenn die Webseite über NGINX läuft, kein Wunder dass das funktioniert.
Dann versuch mal das:
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^ $uri.php last;
}
location ~ \.php$ {
try_files $uri =404;
}
Okay, habe NGINX jetzt entfernt. Aber der obere Code funktioniert trotzdem nicht.
Warum sollte man Dateiendungen entfernen wollen?
Nachdem ich mir die anderen Antworten durchgelesen habe und der Code von Prolativ definitiv funktioniert wäre es vielleicht hilfreich, wenn du mal konkret sagst, was du vorhast. Ich vermute nämlich, dass du etwas anderes meinst als du hier sagst. Mit "Endung entfernen" und "funktioniert nicht" ist der Spielraum mit Möglichkeiten, die man da reininterpretieren könnte einfach zu groß.
Beispiel: https://testseite.de/test.html
Von dort möchte ich einfach nur das ".html" entfernen.
Verwendest du jetzt nginx oder Apache ?
Bei Nginx gibt es nämlich keine .htaccess-Dateien.
Da bei dir die Lösung Prolativ nicht Funktioniert (die absolut korrekt ist) vermute ich dass du nginx verwendest.
In der Regel liegen deine Konfigurationsdateien unter "/etc/nginx/sites-available/".
Für deine Seite müsstest du im "server"-block dann folgendes eintragen:
server { // bereits vorhanden
rewrite ^(.*)\.(html|php)(\?.*)?$ $1$3 permanent;
try_files $uri.html $uri.php;
...
PS: funktioniert nicht mit fastcgi !!!
Ok, grundsätzlich sollte die Lösung von Prolativ dann eigentlich funktionieren.
Wie sieht denn deine vhost-konfiguration aus ?
Die liegt unter /etc/apache2/sites-available/
Funktioniert nicht.