.htaccess Datei
Ich bin verzeifelt
- webserver
Hallo,
meine htaccess sieht so aus:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/include/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
ich hab eine *.js Datei iim Ordner "include" liegen, binde diese so ein:
<script type="text/javascript" src="include/js/jquery.fancybox.js"></script>
Warum kommt dass die Datei nicht da ist? Sie ist 1000000% auf dem Server, kann aber nicht angezeigt werden.
Hello,
meine htaccess sieht so aus:
Und was meinst Du, dass jede Zeile leistet?
http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
RewriteEngine On
RewriteBase /RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/include/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
>
> ich hab eine \*.js Datei iim Ordner "include" liegen, binde diese so ein:
>
> ~~~html
<script type="text/javascript" src="include/js/jquery.fancybox.js"></script>
>
Warum kommt dass die Datei nicht da ist? Sie ist 1000000% auf dem Server, kann aber nicht angezeigt werden.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
meine htaccess sieht so aus:
noch ein Gedanke vorab:
Hast du dich vergewissert, das auf diedem (Virtual) Host überhaupt .htaccess-Dateien berücksichtigt werden?
Wenn das nicht eingeschaltet ist, wird .htaccess allgemein igonoriert.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
Wenn das nicht eingeschaltet ist, wird .htaccess allgemein igonoriert.
ja, die geht, denn das
RewriteRule ^([a-z,-]+)$ /$1.php [L]
zieht, also wird richtig ausgeliefert.
Auch dieses:
RewriteCond %{REQUEST_URI} !^/media/
geht richtig, denn die Bilder werden angezeigt, wenn ich eben dieses hinzufüge:
RewriteCond %{REQUEST_URI} !^/include/
geht es nicht, in den Logs steht folgendes:
[Wed Mar 26 19:24:28 2014] [error] [client 78.xx.203.xxx] File does not exist: /data/www/b1/xxx/html/xxxxx/WebSeite/include.php
ist falsch, denn include ist KEINE Datei sondern ein Ordner.
Hi,
meine htaccess sieht so aus:
es ist schön, dass du Code-Auszüge entsprechend markierst; Apache-Code als HTML auszuzeichnen, ist aber Unfug.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/include/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Hmm. Ein paar Bedingungen (RewriteCond), aber keine RewriteRule dazu. Das ist relativ zweckfrei.
> `<script type="text/javascript" src="include/js/jquery.fancybox.js"></script>`{:.language-html}
Hmm. Eine relative Pfadangabe. Von wo aus gilt die? Und warum überhaupt relativ, anstatt "/include/js/jquery.fancybox.js"?
> Warum kommt dass die Datei nicht da ist? Sie ist 1000000% auf dem Server, kann aber nicht angezeigt werden.
Das ist die Crux an relativen Pfaden. Der Startpunkt muss stimmen.
So long,
Martin
--
Zwei Mäuse treiben's miteinander. Sagt der Mäuserich: "Hoffentlich ist nicht wieder alles für die Katz."
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hi,
Hmm. Ein paar Bedingungen (RewriteCond), aber keine RewriteRule dazu. Das ist relativ zweckfrei.
warum geht es dann bei Media? Und bei Include nicht?
Das ist die Crux an relativen Pfaden. Der Startpunkt muss stimmen.
der ist richtig, da ich base href="" /> nutzte.
Hallo,
Hmm. Ein paar Bedingungen (RewriteCond), aber keine RewriteRule dazu. Das ist relativ zweckfrei.
warum geht es dann bei Media? Und bei Include nicht?
was soll denn da "gehen"? Du hast keine Aktion, keine RewriteRule notiert. Also passiert ... genau, nichts. Sonst erkläre bitte erst mal in Worten, was du überhaupt erreichen willst.
Das ist die Crux an relativen Pfaden. Der Startpunkt muss stimmen.
der ist richtig, da ich base href="" /> nutzte.
Warum? Warum notierst du die Pfade nicht gleich so, wie sie sein sollten?
Ciao,
Martin
Hello,
was soll denn da "gehen"? Du hast keine Aktion, keine RewriteRule notiert. Also passiert ...
*ups*
Wenn man genauer hinguckt :-)
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
Sonst erkläre bitte erst mal in Worten, was du überhaupt erreichen willst.
meine ganze Datei sieht wie folgt aus:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-z,-]+)$ /$1.php [L]
RewriteRule ^([a-z,-]+)/([0-9]+)$ /$1.php?id=$2 [QSA,L]
RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!,.]+)$ /$1.php?user=$2 [QSA,L]
RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!,.]+)/([a-z,A-Z,0-9,!,.]+)$ /$1.php?user=$2&datum=$3 [QSA,L]
damit sage ich, wenn z.B. "impressum.php aufgerufen wird, dass es umgewandelt werden soll in /impressum also er soll auf das .php verzichten, oder wenn ich ein User aufrufe die Datei heißt userprofile.php aber für den User heißt diese /userprofile/gUsqxugzjui
Das alles geht, aber er soll NICHT aus dem Ordner JS eine JS.php machen wie er es DERZEIT macht.
Hab bei Google gelesen, dass man in den Auszuschließenden Ordner einfach eine weitere .htaccess Datei legen soll mit "RewriteEngine Off" habe ich mal versucht und es geht, ob es der richtige Weg ist kann ich nicht sagen.
Hi,
Sonst erkläre bitte erst mal in Worten, was du überhaupt erreichen willst.
meine ganze Datei sieht wie folgt aus:
das ist nicht das, was ich mit "in Worten" meinte, aber durchaus auch informativ. Das hättest du bitte gleich im Startposting angeben sollen! Niemand kann ahnen, was du eigentlich willst, wenn wichtige Teile fehlen.
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/media/
RewriteCond %{REQUEST_URI} !^/js/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-lRewriteRule ^([a-z,-]+)$ /$1.php [L]
Stop! Oder meine Mami schießt!
Alle RewriteConds, die du aufgezählt hast, gelten für diese eine RewriteRule. Alle nachfolgenden Rules sind unabhängig von den Bedingungen. Die Regel besagt: Alles, was nicht mit /media und nicht mit /js beginnt, und nicht auf eine existierende Datei, ein existierendes Verzeichnis oder einen existierenden Symlink passt, soll bitte auf eine gleichnamige Datei mit der Endung ".php" abgebildet werden. Btw, ohne QSA-Flag?
> `RewriteRule ^([a-z,-]+)/([0-9]+)$ /$1.php?id=$2 [QSA,L]`{:.language-apache}
Alle Requests, die aus einer Gruppe von Kleinbuchstaben, Kommas oder Minuszeichen, gefolgt von einem Slash, gefolgt von mindestens einer Ziffer bestehen, sollen ebenfalls auf eine Datei mit der Endung .php abgebildet werden.
> `RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!,.]+)$ /$1.php?user=$2 [QSA,L]`{:.language-apache}
Dito, nur dass in der zweiten Gruppe auch noch Groß- und Kleinbuchstaben, Kommas, Ausrufezeichen oder Punkte vorkommen dürfen. Es ergibt übrigens keinen Sinn, das Komma mehrmals zu nennen.
> damit sage ich, wenn z.B. "impressum.php aufgerufen wird, dass es umgewandelt werden soll in /impressum
Nein, umgekehrt: Wenn /impressum aufgerufen wird, soll das auf /impressum.php abgebildet werden.
> Das alles geht, aber er soll NICHT aus dem Ordner JS eine JS.php machen wie er es DERZEIT macht.
Das schließt du auch nirgends aus. Du schließt das Verzeichnis /js aus, aber nicht /JS. Beachte, dass die meisten Server unter Unix/Linux laufen, und da wird Groß- und Kleinschreibung bei Dateinamen sehr wohl unterschieden.
Ciao,
Martin
--
Verliebt: Er spricht, sie lauscht.
Verlobt: Sie spricht, er lauscht.
Verheiratet: Beide sprechen, und die Nachbarn lauschen.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
Hallo,
vielen vielen Dank für die Erklärung von dir! Zum Teil habe ich es kapiert, aber ich weiß noch nicht was und wie ich umstellen muss, dass mein Vorhaben funktioniert.
Das schließt du auch nirgends aus. Du schließt das Verzeichnis /js aus, aber nicht /JS. Beachte, dass die meisten Server unter Unix/Linux laufen, und da wird Groß- und Kleinschreibung bei Dateinamen sehr wohl unterschieden.
Ich meine natürlich "js" also beides klein geschrieben. Er soll den Ordner "js" und "media" bitte auch als Ordner behandeln und NICHT eine js.php bzw. media.php machen.
Hello,
<script type="text/javascript" src="include/js/jquery.fancybox.js"></script>
Ich bin mir auch noch nicht sicher.
Da Du aber nicht angeben hast (oder ich hab#s übersehen) aus welcher Ebene Du dieses Include überhaupt aufgerufen hast, vermute ich erst einmal, dann ein
> ~~~html
<script type="text/javascript" src="/include/js/jquery.fancybox.js"></script>
>
vermutlich zum Ziel führen würde.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
<script type="text/javascript" src="/include/js/jquery.fancybox.js"></script>
>
> vermutlich zum Ziel führen würde.
wie vorhin schon geschrieben nutze ich base href="" /> aber ich habe es mal mit / versucht, gleiche Effekt.
Hallo,
ich hab mein Problem scheinbar gelöst, es sieht nun so aus:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/media(/.*)?
RewriteCond %{REQUEST_URI} !^/js(/.*)?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-z,-]+)$ /$1.php [L]
RewriteRule ^([a-z,-]+)/([0-9]+)$ /$1.php?id=$2 [QSA,L]
RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!,.]+)$ /$1.php?user=$2 [QSA,L]
RewriteRule ^([a-z,-]+)/([a-z,A-Z,0-9,!,.]+)/([a-z,A-Z,0-9,!,.]+)$ /$1.php?user=$2&datum=$3 [QSA,L]
auf diese zwei Zeilen kam es an
RewriteCond %{REQUEST_URI} !^/media(/.*)?
RewriteCond %{REQUEST_URI} !^/js(/.*)?
keine Ahnung ob es richtig ist, aber ich kann meine JavaScript Dateien nun wieder aufrufen. Sollte jemand etwas Besseres haben bitte schreiben, ich schau auch weiterhin hier rein.