Ankündigung

Einklappen
Keine Ankündigung bisher.

.htacces - RewriteRule für js&css

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • .htacces - RewriteRule für js&css

    Hallo Community,

    ich habe folgendes Problem:
    Ich ich möchte in meiner Applikation Standardmäßig auf die index.php umleiten.
    Javascripte, css und Bilder sollen aber davon verschont bleiben.

    aktuelle .htaccess
    Code:
    RewriteEngine on
    
    RewriteRule !\.(js|css|ico|gif|jpg|png|pdf)$ index.php
    RewriteRule ^(public\/layout|public\/js|public\/images)/(.+)\.(js|css|gif|jpg|png|pdf)$ $1/$2.$3
    für die normalen website funktioniert das ganze auch:
    Code:
    http://scrm.zf/
    wird korrekt rewritet.

    Sobald ich aber einen Aufruf in der Art mache
    Code:
    http://scrm.zf/index/index
    Kackt mir die Applikation ab und findet kein js und css mehr

    Sobald ich aber jetzt im tpl. eine js oder css datei drin habe steht an der stelle an der eingebunden wird folgender Fehler:
    Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
    <head>
    <title>Objekt nicht gefunden!</title>
    <link rev="made" href="mailto:admin@localhost.de" />
    <style type="text/css"><!--/*--><![CDATA[/*><!--*/
     body { color: #000000; background-color: #FFFFFF; }
     a:link { color: #0000CC; }
     p, address {margin-left: 3em;}
     span {font-size: smaller;}
    /*]]>*/--></style>
    </head>
    
    <body>
    <h1>Objekt nicht gefunden!</h1>
    <p>
    
    
     Der angeforderte URL konnte auf dem Server nicht gefunden werden.
    
    
    
     Der Link auf der
     <a href="http://scrm.zf/index/index%3fpage=1">verweisenden
     Seite</a> scheint falsch oder nicht mehr aktuell zu sein.
     Bitte informieren Sie den Autor
     <a href="http://scrm.zf/index/index%3fpage=1">dieser Seite</a>
     &uuml;ber den Fehler.
    
    
    
    </p>
    <p>
    Sofern Sie dies f&uuml;r eine Fehlfunktion des Servers halten,
    informieren Sie bitte den
    <a href="mailto:admin@localhost.de">Webmaster</a>
    hier&uuml;ber.
    
    </p>
    
    <h2>Error 404</h2>
    <address>
     <a href="/">scrm.zf</a><br />
     
    <span>24.04.2010 06:45:57<br />
     Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1</span>
    </address>
    </body>
    </html>
    So meine css, js und images liegen im in folgenden Verzeichnissen:
    Code:
    {DOC_ROOT}
        public
            layout
                images    (für die css)
            js
                tpl          (hier liegen template spezifische js dateien)
                (globale js-dateien wie jquery.js)
            images
                (diverse unterordner)
    Kann mir jemand helfen und verraten, was ich bei meiner RewriteRule noch alles vergessen habe?
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"


  • #2
    moin moin zusammen,
    keiner ne Idee? Ich hab mal ein wenig rumgespielt und folgendes festgestellt:

    Code:
    /* funktioniert */
    <link href="http://scrm.zf/public/layout/style.css" rel="stylesheet" type="text/css" media="screen" />
    
    /* Funktioniert NICHT */
    <script type="text/javascript" src="public/js/jquery-1.js"></script>
    Kann mir das jemand erklären? Normalerweise gibt man die Pfadangaben doch relativ an, oder?
    "My software never has bugs, it just develops random features."
    "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

    Kommentar


    • #3
      Lass mal die zweite Rule komplett weg.
      --

      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
      Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


      --

      Kommentar


      • #4
        Zitat von Paul.Schramenko Beitrag anzeigen
        keiner ne Idee?
        Doch - mal das RewriteLog einschalten.
        Damit kannst du nachvollziehen, was beim Rewriting überhaupt alles passiert. Das macht auch einige Zusammenhänge transparenter.

        Kann mir das jemand erklären? Normalerweise gibt man die Pfadangaben doch relativ an, oder?
        Mach dir bitte klar, woraus der Client bei Angabe eines relativen Pfades die Adresse für den Request zusammensetzt.

        Kommentar


        • #5
          Schau dir doch mal die mod_rewrite Rule an die im Zend Framework Handbuch gegeben ist. Wieso nutzt du nicht einfach die?

          Kommentar


          • #6
            So vielen Dank für die Antworten:
            Habs irgendwie hinbekommen, zwar keine suabere Lösung, aber sie funktioniert!

            Als erstes mal zu den einzelnen Antworten:
            Zitat von Flor1an Beitrag anzeigen
            Schau dir doch mal die mod_rewrite Rule an die im Zend Framework Handbuch gegeben ist. Wieso nutzt du nicht einfach die?
            Das Problem dabei ist, ich verwende kein Zend_Framework, ich hab meine eigene MVC geschrieben.


            Zitat von ChrisB Beitrag anzeigen
            Doch - mal das RewriteLog einschalten.
            Damit kannst du nachvollziehen, was beim Rewriting überhaupt alles passiert. Das macht auch einige Zusammenhänge transparenter.
            Danke für den Tipp, werde ich mal local konfigurieren. Hab gar nicht dran gedacht. Kann ich in Zukunft dann evt, schneller Fehler finden...


            Zitat von ChrisB Beitrag anzeigen
            Mach dir bitte klar, woraus der Client bei Angabe eines relativen Pfades die Adresse für den Request zusammensetzt.
            die Adresse scheint, mir zumindest, richtig zu sein. Über Firebug wird folgende scr angezeigt:
            Code:
            ./public/js/jquery-1.js

            Zitat von nikosch Beitrag anzeigen
            Lass mal die zweite Rule komplett weg.
            Die brauche ich aber, da ich alle PHP-Dateien auf die index.php rewriten möchte.


            ICh verstehe nur leider nicht ganz, wieso ich denn die die Domain mit angeben muss. Weil doch die Pfadangaben im scr-Tag doch relativ sein sollten oder?
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              Zitat von Paul.Schramenko Beitrag anzeigen
              ICh verstehe nur leider nicht ganz, wieso ich denn die die Domain mit angeben muss. Weil doch die Pfadangaben im scr-Tag doch relativ sein sollten oder?
              Da du es offenbar noch nicht verstanden hast, wiederhole ich mal:
              Zitat von ChrisB
              Mach dir bitte klar, woraus der Client bei Angabe eines relativen Pfades die Adresse für den Request zusammensetzt.
              Mit "./public/js/jquery-1.js" hast du eine Angabe gemacht, die sich auf das aktuelle Verzeichnis bezieht. Und welches ist das, unter welcher Adresse rufst du das HTML-Dokument ab ...?

              Kommentar


              • #8
                rein prizipiell, ist wird auf die index.php rewritet, die im DOC_ROOT liegt.
                Der Rest wird von da includiert
                Das Skript, dass das ganze aufruft, liegt im:
                DOC_ROOT/application/controller/IrgendWasController.php

                Ich finds nur geil, dass der der absulute Pfad:
                href="http://scrm.zf/public/layout/style.css"
                in ded css und js-dateien geht, aber der relative nit
                "My software never has bugs, it just develops random features."
                "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                Kommentar


                • #9
                  Ich glaube dein Verständnis von relativ und absolut entspricht nicht ganz dem wie es im Browser umgesetzt wird.
                  Relativ ist NICHT relativ zur Domain.
                  Sondern relativ zum aktuellen PFAD!

                  Relativ:
                  Dokumenturl: http://www.example.com/public/controller/action/
                  Script-Url: ./public/js/jquery-1.js
                  resultierende url: http://www.example.com/public/contro...js/jquery-1.js

                  Absolut ohne domain:
                  Dokumenturl: http://www.example.com/public/controller/action/
                  Script-Url: /public/js/jquery-1.js
                  resultierende url: http://www.example.com/public/js/jquery-1.js

                  Absolut mit domain:
                  Dokumenturl: http://www.example.com/public/controller/action/
                  Script-Url: http://www.example.com/public/js/jquery-1.js
                  resultierende url: http://www.example.com/public/js/jquery-1.js
                  robo47.net - Blog, Codeschnipsel und mehr
                  | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework

                  Kommentar


                  • #10
                    Mit zweite Rule meinte ich zweite Rule, nicht zweite Angabe!
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar

                    Lädt...
                    X