.html entfernen via .htaccess, nur wie?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
#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]

Funktioniert nicht.

0
@Razzer123

Hast du die Dateiendung der Dateien im Verzeichnis entfernt?

0
@Prolativ

Nein. Die Datei .htaccess liegt im gleichen Verzeichnis wie die index Datei und aus irgendeinem Grund funktioniert es einfach nicht. Ich kann mir auch nicht erklären wieso..

0
@Razzer123

Echt merkwürdig. Habs eben selber getestet und funktioniert einwandfrei.

Starte mal deinen Server neu, evtl. hilft das.

0
@Prolativ

"RewriteEngine On", muss in die 1. Zeile richtig?

0
@Razzer123

Nun steht dort, dass ich keine Rechte habe, um diese Seite zu benutzen.

1
@Razzer123

Ja, könnte daran liegen. Füg die Zeile ganz oben ein.

RewriteEngine on
0
@Prolativ

Habe testweise die Datei wieder gelöscht und jetzt kann ich nirgends mehr drauf zugreifen. Besitze übrigens auch NGINX, hatte ich vergessen zu erwähnen.

0
@Razzer123

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;
}
1
@Razzer123

Okay, habe NGINX jetzt entfernt. Aber der obere Code funktioniert trotzdem nicht.

0

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ß.

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 !!!

Ich nutze Apache2, habe NGINX entfernt.

0
@Razzer123

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/

0

Was möchtest Du wissen?