Mod Rewrite Bilder ausschließen

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

  • Mod Rewrite Bilder ausschließen

    Hallo in die Runde,

    ich habe bereits einige Lösungen/Ansätze gefunden wie man Mithilfe von RewriteCond
    bestimmte Voraussetzungen an eine nachfolgende Regel bestimmt, leider scheint das bei mir nicht zu funktionieren.

    Was will ich machen:
    Ich baue meine dynamischen Siteurls auf Statische für SEO optimiert um. Leider habe ich meine Skript/Bildverlinkungen
    nicht alle mit "/" davor damals sinnvoll eingebaut. Dadurch wird z.b. aus der

    dynamischen URL: http://www.example.com/?path=Baufahr...artikel=123456
    eine
    statische URL: http://www.example.com/Baufahrzeuge/...,aid123456.php

    so weit so gut leider stimmen durch den Unterordner einige Bilder/Script Verlinkungen nicht mehr da das Verzeichnis zum root so halt nicht
    mehr gegeben ist...

    Nun hab ich mich in einigen Beiträge schlau gemacht wie man so etwas verhindern kann und folgende 2 Möglichkeiten gefunden:
    1. RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    (sprich wenn File/Ordner nicht existiert Regel die darauf folgt nicht ausführen)
    oder
    2. RewriteCond %{REQUEST_FILENAME} !\.(gif|png|jpe?g|css|js)$
    (folgende Dateitypen einfach von der Regel die darauf folgt ausschließen)

    Beides auch mit %{REQUEST_URI} probiert leider kein Erfolg.

    Hier mein ModRewrite:

    Options +FollowSymlinks
    RewriteEngine on
    RewriteCond %{REQUEST_URI} !\.(gif|png|jpe?g|css|js)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]*)/([^/]*),aid([^/]*)\.php$ /?path=$1page_titel=$2&id_artikel=$3 [L]

    Leider werden ein paar Bilder nicht verlinkt welche es aber 100% in der normalen Verlinkung & auf dem Webspace so auch existieren
    alt: http://www.example.com/images/logo.png
    nach rewrite: http://www.example.com/Baufahrzeuge/images/logo.png

    Könnt ihr mir da weiterhelfen oder ist mein Ansatz komplett falsch?
    Bzw. kann es sein das mein Mod Rewrite Optionen auf dem Server einfach nicht unterstützt werden(Virtual Server Managed bei Hosteurope.de)
    Vielen Dank im Voraus
    Grüße
    Tom
    Zuletzt geändert von tomtherock; 21.09.2011, 09:10.

  • #2
    Bitte Beitrag anpassen: Verwende keine Domainnamen, die nicht deine sind
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Dein Ansatz ist falsch.

      Auf dem Server werde die Graphiken im Verzeichnis /Baufahrzeuge/images gesucht, obwohl sie im /images liegen.

      Du müsstest also in dem Fall, dass eine Datei z.B. /Baufahrzeuge/images/header.png nicht existiert eine zusätzliche Regel anwenden, die auf /images/header.png umschreibt.

      Also fast das Gegenteil von dem was du angedacht hast.

      Kommentar


      • #4
        verstehe dann hab ich rewriteCond wohl falsch verstanden.

        Da ich aber mehrer "vorgegaukelte" Verzeichniss verlinke z.b.:

        /Baufahrzeuge
        /Rennautos
        /Schnellbote
        usw...

        Muss ich für jeden Ordner hierzu eine Regel schreiben? Gibt es da auch einen globalen Ansatz wie man das lößen könnte, wobei hier wahrscheinlich die Gefahr besteht das wenn eine Datei nicht gefunden wird immer z.b. bei Bilder im ROOT/images gesucht/umgeleitet wird und es dadurch zu unerwünschten Ergebnissen führen kann. Oder bin ich da auch auf dem Holzweg.

        Grüße
        Tom

        Kommentar


        • #5
          Ja, hast du. mod_rewrite ändert ja nicht den Quelltext deiner Webseite. Das wäre dir aber sicher aufgefallen.

          Im Pseudo-Code würde die Anweisung so lauten:
          - wenn keine datei mit dem angeforderten Namen/Pfad existiert
          - und die angeforderte Datei eine endung gif/jpg/png/... hat
          - schreibe um auf /images/{name der datei}

          Wie der Verzeichnisname in dem nicht vorhanden Pfad lautet, ist dabei egal.

          Ich würde sogar mal überlegen soweit zu gehen und mir eine Datei schreiben die das ganze mit loggt. Dann kannst du die Pfade nach und nach alle anpassen und hast deine Webseite wieder sauber. Wobei, dafür gibts eigentlich tools. Dann könntest du es von Anfang an sauber machen.

          Unerwünschte Ergebnisse gibt es in meinen Augen übrigens keine. Ich würde die Regel wie gesagt auf bilder (und scripte) einschränken.

          Kommentar


          • #6
            also ich hab nun eine Lösung gefunden allerdings nicht wirklich
            mit ModRewrite sonder per HTML wie gut das jetzt bzgl. Kompatiblität ist
            weiss ich leider noch nicht aber es funktioniert:

            HTML
            <head>
            <base href="http://www.example.de">

            Quelle: SELFHTML: HTML/XHTML / HTML-Kopfdaten / Adressbasis und Zielfensterbasis

            Macht eigentlich genau das was ich benötige, hätte es allerdings trotzdem
            gerne per ModRewrite gelößt um mich in dem Bereich noch zu verbessern

            Grüße
            Tom

            Kommentar


            • #7
              Die baseurl ist definitiv auch ne option.

              Aber es spricht ja nichts dagegen, meinen Vorschlag von oben mal zu implementieren. Versuchs einfach mal!

              Kommentar


              • #8
                ja hatte nur gleichzeitig wie du gepostet

                Werd auf jedenfall dran bleiben weil ich auch gerade am überlegen
                bin ob der googlebot das mit <base> überhaupt kapiert, denn wenn nicht
                wäre das eigentlich noch schlechter wie jetzt weil er ein 404 zurück bekommt bei manchen Bildern etc...

                die Einschränkung habe ich ja bereits mit RewriteCond denke das passt
                muss nur das "!" wegnehmen.

                Frage noch gibt es eine Möglichkeit dann nicht das verzeichnis fest anzugeben
                wie in deinem Beispiel sondern ihm zu sagen such nicht in:

                ROOT/Baufahrzeuge/groß/images/test.jpg

                wenn du nichts findest dann such in:
                ROOT/Baufahrzeuge/images/test.jpg

                wenn du nichts findest dann such in:
                ROOT/images/test.jpg

                Wäre dann halt super schon dynamisch ohne ständig Anpassung vorzunehmen

                Kommentar


                • #9
                  Also, die Sumas werden damit schon umgehen können.

                  Auch deine "dynamischen Abfragen" wären möglich.

                  ABER:
                  Du weißt genau, dass KEINER dieser Pfade existiert. Warum solltest du sie also abfragen wollen?

                  Kommentar


                  • #10
                    Ja Denkfehler von mir, bin schon ganz verwirrt vor lauter testen .

                    So mein erster Erfolg:
                    RewriteRule ^(.*)/images/(.*)\.(gif|png|jpe?g)$ /images/$2 [L]

                    Dadurch werden die Bilder egal von welche Unter/Unter/Unterordner verfügbar da sie auf ROOT/images verweisen

                    Jetzt hab ich allerdings noch die feste Angabe /images/ mit drin,
                    hab keine wirkliche Idee wie dem das beibringen kann mit RewriteCond
                    ( RewriteCond %{REQUEST_URI} !-f )

                    "wenn du es nicht finden kannst probier es doch erstmal
                    mit einem Unterverzeichnis weniger !?"

                    Evtl. ist das ja auch gar nicht möglich, bzw. ich glaub das ich da noch
                    nicht wirklich durchsteig *schäm* dementsprechend ich muss meine
                    Verlinkungen in meinem Projekt alle überarbeiten .

                    Grüße
                    Tom

                    Kommentar

                    Lädt...
                    X