Url-rewriting brach link zu css
Ich bin mit der folgenden Einstellung für url rewriting:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
In index.php
ist parse $_GET['url']
so dass in den folgenden Beispielen:
ROOT/user/id/1/name/bobby //user is the page, id = 1, name = bobby
ROOT/blog/post/123/title/welcome //blog is the page, post = 123, title = welcome
So, dass der erste parameter(? ich weiß nicht, wie Sie es nennen) ist der name der Seite dann die folgenden paar Parameter wie "Schlüssel/Wert".
Wenn ich jetzt durchsuchen ROOT/
den link zu den stylesheets, sind eingefügt in den html-Code der Seite und die Seite richtig dargestellt werden.
Ich fi durchsuchen ROOT/index
(das ist das gleiche wie ROOT/
) zeigt er die Seite (mit Inhalt und andere Sachen) richtig, aber die links (auch wenn in der html-Struktur sind richtig geschrieben) stylesheets werden nicht geladen. Und ich kann sehen, dass aus der Tatsache, dass meine Seite ohne css an alle, wenn ich Sie laden.
Wie kann ich dieses Problem beheben?
BEARBEITEN
In der css Datei ist der Pfad wie folgt:
project/view/css/common.css
Die Datei wo ist es enthalten ist in
project/public/index.php //the one with .htaccess and rewrite rules
Das bringt mich auf einen link (innerhalb der index.php) wie
../view/css/common.css
Aber das funktioniert unterschiedlich, je nachdem, wie die url scheint. Beispiele:
# For URL = public/
project/view/css/common.css //good
# For URL = public/index/
project/public/view/css/common.css //broken
# For URL = public/index/key/value
project/public/index/key/view/css/common.css //broken
mein link sieht wie echt aus, Pfade, link.
Sie sehen so aus localhost/project/public/view/css/index.css
InformationsquelleAutor Shoe | 2011-03-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie haben zwei Probleme (wie die gegebenen Antworten nicht Ihr problem lösen, aber...):
Sind Sie umschreiben alle Datei-Namen, so dass, wenn der browser anfordert
css/index.css
rewrite verwandelt, die zuindex.php?url=css/index.css
. @cOle2 Antwort sollte das lösen.Sind Sie nicht mit absoluten Pfaden für Ihre css-Dateien. Der server übersetzt die angeforderte Seite wie
/user/id/1/name/bobby
zu/index.php?etc....
aber wenn der browser zum Beispiel die css-Datei ist so etwas wiecss/index.css
im code, es wird tatsächlich Anfrage/user/id/1/name/bobby/css/index.css
und dass die Datei nicht vorhanden ist. Können Sie lösen, indem Sie nur absolute Pfade zu den externen Dateien (css, js, Bilder, etc.) wie/css/index.css
.Edit: Basierend auf Ihre Kommentare, sowohl Ihre Pfade sind relativ und dein css ist nicht zugänglich durch den browser, so müssen Sie zu:
project/public
Verzeichnis (wieproject/public/css
)/css/index.css
.Pigarelli, Was ist die Wurzel von Ihrem web-server im Vergleich zu Ihrer Verzeichnis-Struktur??? Wenn es
project/public/
dann Ihre css-Dateien sind nicht öffentlich zugänglich, so dass Sie brauchen, um Sie zu bewegen, um dieproject/public/
- Verzeichnis.Das Verzeichnis der Benutzer durchsuchen ist
project/public/
so dass er nicht haben Zugriff auf alle anderen Ordner wieproject/class/
oderproject/library/
oderproject/view
. Während die css-Datei ist aufproject/view/css/common.css
.Pigarelli das ist das problem, dann wird der Benutzer keinen Zugriff auf die css-Dateien im
project/view
- Verzeichnis.InformationsquelleAutor jeroen
Kommentar lässt mich nicht formatieren Sie den code, können Sie bitte versuchen, diese:
Update
Können Sie versuchen, so etwas wie dies in der
<head>
Abschnitt Ihrer Seiten zu unterstützen relativen Pfad für die Bild - /css - /js-Dateien referenziert auf diese Seite:Pigarelli: Bitte versuchen Sie, die base-tag zu unterstützen, relative URLs für Ihre statische Dateien auf der Seite: zB
<head> <base href="http://www.example.com/static-files/" /> </head>
+1 das war die Linie, die ich war auf der Suche nach halt meinen Anforderungen an externe Sachen umgeschrieben werden!
InformationsquelleAutor anubhava
Können Sie versuchen, entfernen von bestimmten Dateiendungen von der rewrite-Regel, zum Beispiel die folgende Regel missachten, Bilder, css-und js-Dateien.
Edit: Das ist, wie ich es anwenden:
Legen Sie es nach dem RewriteEngine On line
funktioniert nicht. Auch habe ich aktualisiert meine Frage. Bitte werfen Sie einen Blick.
Take a look @jeroen die Antwort, wie es klingt wie Sie Ihre Pfade sind relativ.
Sie sind. Wie kann ich die lösen mein Problem dann?
InformationsquelleAutor cOle2