Endungen nur von .php entfernen .htacess
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfang
anweisung
aussehen
browser
code
dank
datei
endung
erledigen
file
folgenden code
hilfe
http
machen
option
problem
test
testen
umleitung
url
-
Hey,
Ich stehe gerade echt vor einem Problem und hoffe dass dies hier das richtige Forum ist :)
Ich möchte eigentlich ganz simpel wenn ich eine Url mit .php Endung eingebe dass die Endung nicht angezeigt wird.
Folgendes habe ich eingetragen:
Options +FollowSymlinks RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+)$ /$1.php [L,QSA]
Das Problem, auch .html Endungen werden entfernt, warum?
Hoffe ihr könnt mir helfen
LG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey, habs probiert, gleiches Ergebnis
Sobald ich test.html eingebe macht mir das Ding test draus
Gebe ich z.b test.txt ein lässt er es stehen
? LG -
Wenn ich den Code richtig verstehe, entfernt dieser keine Endungen sondern sorgt dafür, dass PHP-Dateien über URLs ohne Endung überhaupt aufgerufen werden können.
Das was dir dann die Umleitung macht z.B. von /test.php auf /test müsste anders aussehen.
Hast du noch andere Anweisungen bezüglich dieser Umleitung in der .htaccess?
Und was passiert wenn du im Browser ein privates Fenster öffnest? Beobachtest du dann noch den selben Fehler? -
RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
-
@fuerderer
fuerderer schrieb:
Wenn ich den Code richtig verstehe, entfernt dieser keine Endungen sondern sorgt dafür, dass PHP-Dateien über URLs ohne Endung überhaupt aufgerufen werden können.
Leider steig ich da auch nicht so wirklich durch :/
fuerderer schrieb:
Hast du noch andere Anweisungen bezüglich dieser Umleitung in der .htaccess?
Nur das, was ich oben geschrieben habe.
Problem bleibt auch Privat
@horstexplorer
Auch mit deinem Code ändert sich nicht viel
-Ich gebe eine URL mit .php ein -> das .php wird entfernt
-ich gebe eine URL ohne Endung ein -> sie wird aufgerufen
- Ich gebe eine URL mit .html Endung ein -> .html wird entfernt, Fehlermeldung:The requested URL /test was not found on this server. -
Der Code war dafür da um über den Filename auf Filename.php zuzugreifen. Das kann man auch doppelt noch mit .html nutzen, sodass du bei Weiterleitungen nicht mehr drauf achten musst welche Dateiendung du nun verwendest. Kann aber Probleme geben wenn .html und .php mit gleichem Namen existieren.
Die Endung zu entfernen nachdem sie eingegeben wurde, dazu habe ich nichts gefunden.
Ich vermute daß da ein redirect notwendig ist anstelle eines rewrites. Also das man das beides in Kombination benutzt.
Ich kucke mal ob ich da was hin bekomme, füge das dann hier ein.
Beitrag zuletzt geändert: 13.8.2018 15:31:17 von horstexplorer -
@horstexplorer Erstmal danke für die Hilfe :)
Erstmal Update: Habe jetzt auf die html Dateien geschissen und sie auch in php gemacht.
Hab jetzt folgenden Code um www.test.de/test.php einzugeben und www.test.de/test angezeigt zu bekommen
RewriteEngine On # Redirect external .php requests to extensionless url RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/ RewriteRule ^(.+)\.php$ $1 [R=301,L] # Resolve .php file for extensionless php urls RewriteRule ^([^/.]+)$ $1.php [L]
Jetzt funktioniert das bei manchen Seiten perfekt, bei anderen leitet er mich auf http://example.com/folder/test weiter. Was ist denn jetzt los? Pls kill me
-
Oh :D
Was steht denn noch alles in der Datei drinnen.
Hatte sowas auch das das für einige Seiten anders war als es in der htaccess stand. Bei mir ging das dem deaktivieren von Multiviews weg.
Beitrag zuletzt geändert: 13.8.2018 16:16:16 von horstexplorer -
horstexplorer schrieb:
Was steht denn noch alles in der Datei drinnen.
das ist alles, habe die Datei selbst erstellt. Muss da mehr rein?
Wie deaktiviert man den Multiviews? geht das auch über die Datei?
LG -
horstexplorer schrieb:
Das müsste
Option -MultiViews
in der htaccess am Anfang erledigen können.
Problem bleibt leider :(
Options -MultiViews RewriteEngine On # Resolve .php file for extensionless php urls RewriteRule ^([^/.]+)$ $1.php [L]
LG -
Gibt es vielleicht noch mehr htaccess Dateien?
Schon versucht den Browser Cache zu leeren, vielleicht bringt das etwas. -
Puhh
horstexplorer schrieb:
Schon versucht den Browser Cache zu leeren, vielleicht bringt das etwas.
Ich wusste gar nicht dass das irgend einen Einfluss hat was da im Zwischenspeicher ist :/
Gut das hat natürlich alle Ergebnisse verfälscht
Back to start:
Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
-> Der Code gibt mir die Möglichkeit eine Seite ohne Extension aufzurufen
fuerderer schrieb:
Wenn ich den Code richtig verstehe, entfernt dieser keine Endungen sondern sorgt dafür, dass PHP-Dateien über URLs ohne Endung überhaupt aufgerufen werden können.
Das was dir dann die Umleitung macht z.B. von /test.php auf /test müsste anders aussehen.
Doch wie lösche ich das .php aus einer URL, also mache diese Umleitung? Hab dazu nichts funktionierendes gefunden..
LG -
Ich glaube da etwas gefunden zu haben.
https://stackoverflow.com/questions/18692942/301-redirect-php-to-html-via-htaccess
Dieser Code leitet von .php auf .html um.
RewriteCond %{THE_REQUEST} \ /(.+)\.php RewriteRule ^ /%1.html [L,R=301]
Wenn man einfach die Endung nun raus nimmt, sollte der auf nur den Dateinamen weiterleiten.
RewriteCond %{THE_REQUEST} \ /(.+)\.php RewriteRule ^ /%1 [L,R=301]
Also sieht deine htaccess in etwa so aus:
Options -MultiViews RewriteEngine On RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L] RewriteCond %{THE_REQUEST} \ /(.+)\.php RewriteRule ^ /%1 [L,R=301]
Beitrag zuletzt geändert: 13.8.2018 18:15:02 von horstexplorer -
Ok Top geht erstmal,
werde noch ausführlicher Testen
Danke dir erstmal für deine Hilfe :)
So hab ich es:
Options -MultiViews RewriteEngine On RewriteCond %{THE_REQUEST} \ /(.+)\/ RewriteRule ^ /%1.php [L,R=301] RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage