kostenloser Webspace werbefrei: lima-city


.htaccess Problem: test/ => test.php

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Hi,

    ich habe folgendes in der .htaccess stehen:
    RewriteEngine on
    RewriteRule ^(.*)/$ index.php?site=$1


    Im Verzeichnis befindet sich eine Datei namens test.php.

    Wenn man jetzt in der Adresszeile "test/" eingibt, ist $1 nicht "test", sondern "test.php". Wenn man aber "test1/" eingibt, ist $1 = "test1.
    Wieso passiert das und wie kann man dies lösen?

    Danke schonmal für die Hilfe!

    Beitrag zuletzt geändert: 18.3.2012 17:50:53 von silecom
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. t*****b

    silecom schrieb:
    Wenn man jetzt in der Adresszeile "test/" eingibt, ist $1 nicht "test", sondern "test.php". Wenn man aber "test1/" eingibt, ist $1 = "test1.
    Wieso passiert das und wie kann man dies lösen?



    RewriteEngine on
    RewriteRule ^(.*).php$ index.php?site=$1


  4. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Ich hätte gerne dass man die Seite so aufrufen kann: example.com/test/, also ohne .php Endung. Das Problem ist aber wie gesagt, dass der Apache automatisch nach einer Datei namens test.php im Verzeichnis sucht und dies dann für den regulären Ausdruck einsetzt - ist das möglich?
  5. t*****b

    silecom schrieb:
    Ich hätte gerne dass man die Seite so aufrufen kann: example.com/test/, also ohne .php Endung. Das Problem ist aber wie gesagt, dass der Apache automatisch nach einer Datei namens test.php im Verzeichnis sucht und dies dann für den regulären Ausdruck einsetzt - ist das möglich?


    Klar:
    RewriteEngine on
    RewriteRule ^(.*)/$ $1.php


    Macht aus example.com/test/ => example.com/test.php
  6. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Das Problem ist, dass der Server mir "test" automatisch zu "test.php" macht, weil er die Datei im Verzeichnis findet bzw. die Datei existiert. Wenn ich "test1" schreibe, findet er sie nicht und schreibt deshalb auch "test1".

    Ich möchte nun aber, dass auch bei "test" nur "test" als Wert verwendet wird.
  7. anti-atomkraft

    Kostenloser Webspace von anti-atomkraft

    anti-atomkraft hat kostenlosen Webspace.

    Schon versucht, ob
    RewriteRule ^(test|test1)$ index.php?site=$1

    geht?
  8. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Bei "test" zeigt er mir die test.php an => falsch.
    Bei "test1" zeigt er mir, wie es auch sein soll, die index.php mit site=test1 an.
  9. t*****b

    silecom schrieb:
    Bei "test" zeigt er mir die test.php an => falsch.
    Bei "test1" zeigt er mir, wie es auch sein soll, die index.php mit site=test1 an.



    RewriteRule ^(.*)/$ index.php?site=$1


    Macht aus

    /irgendwas/ => index.php?site=irgendwas

    Was stimmt daran nicht? Wie möchtest du es genau haben?
  10. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    trueweb schrieb:
    silecom schrieb:
    Bei "test" zeigt er mir die test.php an => falsch.
    Bei "test1" zeigt er mir, wie es auch sein soll, die index.php mit site=test1 an.



    RewriteRule ^(.*)/$ index.php?site=$1


    Macht aus

    /irgendwas/ => index.php?site=irgendwas

    Was stimmt daran nicht? Wie möchtest du es genau haben?

    So habe ich es ja wie in meinem Eingangspost in der .htaccess.

    Das Problem ist, dass wenn der Apache die Datei findet -> die Datei existiert -> diese für $1 nimmt und nicht den ursprünglichen Wert in der Adresszeile.
  11. Hey,

    genau hier liegt das Problem, aber als Workaround könnte man auch:

    RewriteRule !(index\.php)$ /index.php?query=%{REQUEST_URI}


    nehmen und später in PHP das so lösen:

    bei einer Seite einfach:
    <?php
    $site = str_replace(array('.php','/'),'',$_GET['query']);
    ?>

    Grüße
  12. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    UPDATE:
    Man muss MultiViews deaktivieren. Dann funktioniert es wie gewollt :)

    Kann geschlossen werden, danke.

    Beitrag zuletzt geändert: 18.3.2012 20:46:36 von silecom
  13. Hallo silecom,

    nachdem ich das Thema ganz interessant fand habe ich ein wenig rumgesucht und bin glaube ich fündig geworden.
    Das Problem ist wohl, dass das Dateisystem gegenüber Rewrite-Rules vorrangig behandelt wird.
    D.h. insbesondere, dass auch Directory-Rules angewendet werde, bevor die Rewrite-Rule an der Reihe ist.
    Und es kann sein, dass die MultiView-Option aktiviert ist.
    Als mögliche Lösung kannst Du ja mal folgendes versuchen:
    Options -MultiViews
    RewriteEngine on
    RewriteRule ^(.*)/$ index.php?site=$1
  14. Autor dieses Themas

    silecom

    silecom hat kostenlosen Webspace.

    Jup, genau so wie du es geschrieben hast, funktioniert es nun auch.
    Wir haben quasi in der selben Minute geschrieben :)
  15. 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!