Endungen und weiterleitungen mit htaccess
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anfrage
anpassen
antworten
aussehen
beispiel
bild
code
datei
duplikat
dynamisches laden
endung
fehler
http
index
leiten
page
parameter
raten
test
url
-
Hallo,
Ich würde gerne wissen wie ich mit htaccess die .php Endungen meiner Dateien entfernen kann z.B. http://example.com/test.php http://example.com/test und wenn man dann auf die .php Datei zugreifen will wird man dann automatisch auf die URI ohne Endung weitergeleitet z.B. wenn man auf http://example.com/test.php geht wird man auf http://example.com/test weitergeleitet. Dann würde ich es gerne so haben, dass wenn man auf http://example.com/index.php oder http://example.com/index geht auf http://example.com weitergeleitet wird.
MFG anonymus1802 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hey,
wenn deine Seite folgendermasen aufgerufen wird:
www.example.com/test.php
kannst du den unten ausgeführten Code nutzen - habe ihn nicht(!) getestet.
Besser wäre es, wenn du die Seite einfach per Get übermittelst, dann hast du auch mehrere Möglichkeiten mit mod_rewrite zu arbeiten. Ich kann dich ja nicht davon abhalten, aber so sollte es dann ungefähr aussehen:
RewriteEngine on RewriteCond %{REQUEST_URI} /(.*)/ RewriteRule (.*) /%1.php [QSA]
Grüße
-
hallo anonymus1802,
dafür ist in der htaccess mod_rewrite zuständig: http://de.selfhtml.org/servercgi/server/rewrite.htm
ist aber ein recht kompliziertes thema und man kann viel mist bauen...
ich würde dir auch schon aus suchmaschinentechnischen gründen raten, die urls eher so umzuleiten:
user ruft http://example.com/test oder http://example.com/test/ oder http://example.com/test/index.html auf die alle auf http://example.com/test.php umgeleitet werden.RewriteEngine On RewriteRule ^(.*)(/)?(index\.html)?$ /deinserverpfad/$1.php [L]
da es zu fehlern kommt wenn der user eine adresse aufrufen würde die nicht als .php datei vorhanden ist wäre es noch sinnvoller eine zentrale php datei anzulegen in der du dann diesen fehler abfangen kannst oder halt die entsprechende .php datei includierst, in etwa so:RewriteEngine On RewriteRule ^(.*)(/)?(index\.html)?$ /deinserverpfad/anfrage.php?anfrage=$1 [L]
so sollten also alle anfragen in der datei anfrage.php landen, mit dem "test"-teil als get-parameter übertragen.
dort könntest du prüfen ob der get-parameter "anfrage" auch tatsächlich als ziel vorhanden ist und wenn ja die entsprechende datei includieren. oder ansonsten halt eine entsprechend fehlermeldung ausgeben
beachte aber das in beiden beispielen sämtliche anfragen umgeleitet werden, also auch zb. bilder oder extern referenzierte css oder javascriptdateien.
viel spaß beim rumfummeln :)
LG hechma -
Hallo,
Ich würde es aber lieber gerne so machen wie ich es beschrieben habe deshalb bitte noch mehr Antworten.
#push -
Ich habe dir doch bereits den Code oben geschrieben den du brauchst. Was willst du da noch für Antworten haben? :D
-
Ich hab mich jz doch für dynamisches laden der Website mit PHP entschieden @cannadesign
Beitrag zuletzt geändert: 29.10.2014 12:50:12 von anonymus1802 -
anonymus1802 schrieb:
Ich hab mich jz doch für dynamisches laden der Website mit PHP entschieden @cannadesign
Dann musst du den Code nur deinen anpassen. Bei mir sieht er zum beispiel folgendermasen aus.
RewriteEngine on RewriteCond %{REQUEST_URI} /(.*)/ RewriteRule (.*) /index.php?page=%1 [QSA]
Wobei ich hier die Endung .html verwende. Aufgerufen wird das ganze dann per www.example.com/test/ und ohne mod_rewrite sehe diese dann so aus:
www.example.com/index.php?page=test
lg -
cannadesign schrieb:
anonymus1802 schrieb:
Ich hab mich jz doch für dynamisches laden der Website mit PHP entschieden @cannadesign
Dann musst du den Code nur deinen anpassen. Bei mir sieht er zum beispiel folgendermasen aus.
RewriteEngine on RewriteCond %{REQUEST_URI} /(.*)/ RewriteRule (.*) /index.php?page=%1 [QSA]
Wobei ich hier die Endung .html verwende. Aufgerufen wird das ganze dann per www.example.com/test/ und ohne mod_rewrite sehe diese dann so aus:
www.example.com/index.php?page=test
lg
Danke :)
//Edit ich habe es jetzt genutzt nur mein Problem ist, dass jetzt die Bilder nicht mehr geladen werden :( @cannadesign
Beitrag zuletzt geändert: 29.10.2014 14:44:01 von anonymus1802 -
hallo anonymus1802,
ich würde dir raten deine seiten in dieser form erreichbar zu machen:
http://example.com/test/ und http://example.com/test/index.html
das index.html ist optional und stellt keinen bösen duplikate content dar.
anfragen die so aussehen:
http://www.example.com/test/
solltest du zusätzlich als externe weiterleitung mit code 301 umleiten damit kein duplikate content entsteht, die möglichkeit zum aufruf aber trotzdem bestehen bleibt:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.example\.com$ RewriteRule ^(.*)$ http:/example.com/$1 [L,R=301]
jetzt könntest du zb alle anfragen die wie oben beschrieben auf "/" oder "/index.html" enden intern in deine zentrale php-datei leiten:
RewriteCond %{REQUEST_URI} /$ [OR] RewriteCond %{REQUEST_URI} /index\.html$ RewriteRule (.*) /index.php [L,QSA]
damit werden auch NUR diese umgeleitet und nicht etwa bild-anfragen oder ähnliches.
die auswertung der uri in deiner zentralen index.php kannst du dann ja auch dort direkt mit php erledigen, also ohne get-parameter-übergabe sondern mit z.b. "$_SERVER['REQUEST_URI']"
LG hechma -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage