kostenloser Webspace werbefrei: lima-city


.htaccess - Schöne Urls

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    grunt

    Kostenloser Webspace von grunt

    grunt hat kostenlosen Webspace.

    Htag/all">allo Leute,

    ich habe ein Problem. Ich habe schon Gegoogelt was das Zeug hält aber leider bin ich daraus nicht schlau geworden.

    Es geht darum ich möchte folgende Url:
    www.domain.at/index.php?include=art

    In diesen Url umwandeln:
    www.domain.at/art

    Das ganze habe ich schon hinbekommen:
    RewriteEngine on
    RewriteBase /domain
    
    RewriteCond %{REQUEST_URI} !^/+(admin|images)/?
    RewriteCond %{REQUEST_URI} !(\..{2,4})$
    RewriteCond %{QUERY_STRING} ^(.*)$
    RewriteRule ^(.*)$ index.php?include=$1 [L]


    Allerdings möchte ich jetzt noch weitere Variablen mitgeben:
    www.domain.at/art/1

    Wie löse ich das?

    lg
    grunt
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

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

  3. Du kannst die RewriteRule einfach erweitern.
    RewriteRule ^([^/]*)(/(.*))?$ index.php?include=$1&variable=$3 [L]
    (ungetestet)
    Ich hab das jetzt gleich optional gestaltet, dass du nicht unbedingt Variablen mitgeben musst. Versuch mal, ob das funktioniert, und auch was in der
    $_GET["variable"]
    steht, wenn du keine Variable mitgibst. Vermutlich wird es ein leerer String sein. Falls dich das stört, müsste ich was besseres zusammen bauen :biggrin:
  4. Autor dieses Themas

    grunt

    Kostenloser Webspace von grunt

    grunt hat kostenlosen Webspace.

    Super danke hat funktioniert!

    Allerdings hab ich jetzt das Problem das die Links falsch gesetzt werden.

    Das heißt ich rufe www.domain.at/picture/1 auf und dann haben alle Links immer www.domain.at/picture/art/ etc... somit wird auch keine CSS Datei geladen?

    lg Fabi
  5. grunt schrieb:
    Allerdings hab ich jetzt das Problem das die Links falsch gesetzt werden.
    Da hast du recht, für den Browser sieht es jetzt aus, als wären das Unterordner. Dementsprechend baut er auch die Links zusammen.

    Du musst also mit den üblichen Techniken etwas nachhelfen.
    a) Mit
    ..
    zurück gehen:
    <a href="../anderesPicture/2">weiter</a>

    b) Absoluten Pfad von der Domain weg: (indem man mit / beginnt)
    <a href="/anderesPicture/2">weiter</a>

    Das waren jetzt Html-Links, gilt natürlich auch für Bilder, Css, Javascript usw.
  6. Autor dieses Themas

    grunt

    Kostenloser Webspace von grunt

    grunt hat kostenlosen Webspace.

    Ich kann leider die Links nicht zurück gehen lassen mit ".."

    Den dann habe ich das Problem das die Links nicht mehr bei den anderen Seiten passen die ich z.B. mit
    www.domain.at/art
    aufrufe.


  7. Auch auf die Reihenfolgen in der htaccess Datei geachtet?

    Ich habe mir es wesentlich einfacher gemacht.

    In der htaccess habe ich nur folgendes drin stehen:

    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
     
    RewriteRule ^.*$ ./index.php


    Den Rest werte ich mittels explode in der index.php aus. So ist man meines Erachtens etwas flexibler.
  8. Autor dieses Themas

    grunt

    Kostenloser Webspace von grunt

    grunt hat kostenlosen Webspace.

    all-in1 schrieb:
    Auch auf die Reihenfolgen in der htaccess Datei geachtet?

    Ich habe mir es wesentlich einfacher gemacht.

    In der htaccess habe ich nur folgendes drin stehen:

    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
     
    RewriteRule ^.*$ ./index.php


    Den Rest werte ich mittels explode in der index.php aus. So ist man meines Erachtens etwas flexibler.


    Also meine .htaccess Datei sieht folgender massen gerade aus:
    RewriteEngine on
    RewriteBase /domain
    
    RewriteCond %{REQUEST_URI} !^/+(admin|images)/?
    RewriteCond %{REQUEST_URI} !(\..{2,4})$
    RewriteCond %{QUERY_STRING} ^(.*)$
    
    RewriteRule ^([^/]*)(/(.*))?$ index.php?include=$1&item=$3 [L]


    Habe auch dein Beispiel probiert aber da bekomme ich leider auch das Problem mit den Links.. und somit lädt es mir keine .css, .js Dateien etc...
  9. Dann musst du für jeden Fall der eintreffen kann eine Rewrite Rule aufstellen.


    Oder wenn du meinen Fall nimmst, dann die Links zu den CSS und JS Dateien entsprechend ändern. Hatte anfangs auch Probleme, aber nun läuft alles. Zusehen unter http://webmeteor24.de

    Kann mich nun um meine ganzen Erweiterungen kümmern, damit ich das CMS dann auch endlich raus bringen kann.
  10. Autor dieses Themas

    grunt

    Kostenloser Webspace von grunt

    grunt hat kostenlosen Webspace.

    Falls es jemanden interessiert so habe ich mein Problem gelöst.

    Hab mir einfach eine function geschrieben die mir den aktuellen Url ausliest + dem Folder wo die Website liegt. Folder ist eigentlich nicht relevant nur in meinem Fall den ich habe mehrer Websiten auf meinem Testserver.

    function getUrl(){
    
        $server = $_SERVER['SERVER_NAME'];
        
        $folder = $_SERVER['REQUEST_URI'];
        
        $folder = explode("/", $folder);
        
        //Hier ändern wenn sich die Website nicht in einem Unterordner befindet
        return "http://" .$server ."/". $folder[1];
    }


    function wird so aufgerufen:
    <?php echo getUrl(); ?>
  11. Du kannst es über HTML ganz leicht haben.
    Siehe den <BASE>-Tag.

    <base href="http://www.meineSeite.de/unterordner-mit-den-dateien" />


    Das versteht quasi jeder Browser, ist keiner von den "neuen" (html5) Tags.
    So wird jeder Link der ohne eigene URL vorher auf der Seite auftaucht, mit dem Link oben "gestartet".

    Jetzt nochmal auf Deutsch:

    Du hast deine Dateien in "http://meineseite.de/css/", benutzt aber nun den <BASE>-Tag,
    jetzt taucht ein Link auf deiner Seite auf der das Stylesheet "mysuperawesomewebsite.css" lädt, jedoch ist im Browser die Seite über die "schöne URL" aufgerufen worden. Das macht aber nun nichts mehr, da die o.g. Datei nun von http://meineseite.de/css/mysuperawesomewebsite.css geladen wird.

    Jedoch vorsicht! Es werden meines Wissens nach ALLE Links die nicht mit einer Internetadresse ausgestattet sind (bswp. /img statt http://meineseite.de/img) umgeschrieben, also auch Links über den <a>-Tag

    Hoffe ich konnte helfen.
  12. 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!