kostenloser Webspace werbefrei: lima-city


Endungen und weiterleitungen mit htaccess

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    a**********2

    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
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
    :wave:
  4. 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
  5. Autor dieses Themas

    a**********2

    Hallo,
    Ich würde es aber lieber gerne so machen wie ich es beschrieben habe deshalb bitte noch mehr Antworten.
    #push
  6. Ich habe dir doch bereits den Code oben geschrieben den du brauchst. Was willst du da noch für Antworten haben? :D
  7. Autor dieses Themas

    a**********2

    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
  8. 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
  9. Autor dieses Themas

    a**********2

    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
  10. 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
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!