Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite] Nie wczytuje CSS i Grafiki
Forum PHP.pl > Forum > Przedszkole
stirith
Witam


oto "kawałek" z pliku .htaccess

Kod
RewriteRule ^md/([^-]*)/([^-]*).html$ site/md.php?cs=1&id_mod_mod=4


Powoduje to powstanie że mogę się odwołać do strony poprzez adres : http://adres_strony.pl/md/1/4.html

I działa...tylko że się nie wczytuje grafika i CSS...

mam też coś takiego :

Kod
RewriteRule ^mod/([^-]*).html$ site/mod.php?cs=1


i tutaj mamy adres http://adres_strony.pl/mod/1.html

i tutaj wszystko się wczytuje...

Czyli wychodzi na to że w tym pierwszym przypadku po dodaniu jednego katalogu (zagłębienie drzewa katalolgu) adres do zewnętrzego css i grafiki nie pasuje...

Jak to naprawić ?
Linki bezpośrednie mijają się z celem...napewno musi być coś innego..
pozdrawiam
Maciekbjw
Da się to zrobić tak jak napisałeś, linkami bezpośrednimi biggrin.gif Ale rzeczywiście to jest beznadziejne rozwiązanie.
Kiedyś też miałem taki problem i zrobiłem to tak:

Wszelkie ścieżki do obrazków i styli:
Kod
<img src="../obrazki/porn.jpg" /> // obrazek

<link rel="stylesheet"  type="text/css" media="screen" href="../style.css" />  //style


U mnie to działało.
Jeszcze wyjaśnienie: '../' oznacza w unixach odwołanie do głownego katalogu.
trucksweb
troche dziwnie to zrobiles- odwolanie do styli najlepsze rozwiazanie- zawsze dziala podajesz pelna sciezke do pliku z css'em

a w pliku z css'em w ktorym ustawiasz np. tlo dajesz:
  1. <?php
  2. backgroud: url(../katalog/obrazek.jpg);
  3. ?>


i powinno pomoc
stirith
z tego co Ja wiem...to "../" oznacza odwołanie się do "wyższego"/"nadrzędnego" katalogu...

więc jak mam plik który mod_rewrite mi da (patrząc od index) site/mod/1/2.html

a css mam (patrzac od index) css/style.css

więc plik 2.html...musi mieć adres: "../../../css/style.css" -> chyba nic nie pomieszałem tongue.gif

a wcześniej miałem o jednen "../" mniej...i dlatego teraz nie działa...

napewno coś jest...tylko co

Chyba sie nie rozumiemy...

"Stary" adres : site/md.php?cs=1&id_mod_mod=4
miał adres do pliku css : ../../style.css

nowy adres: md/4/1.html -> czyli mod_rewrite tworzy dodatkowo jeden katalog...co zmienia postać rzeczy dla wczytywanej grafiki :

czyli adres do css musi być: ../../../style.css

Jak to zrobić żebym w plikach nic nie musiał zmieniać ? tak automatycznie ?


Cytat(trucksweb @ 19.04.2008, 00:27:43 ) *
troche dziwnie to zrobiles- odwolanie do styli najlepsze rozwiazanie- zawsze dziala podajesz pelna sciezke do pliku z css'em

a w pliku z css'em w ktorym ustawiasz np. tlo dajesz:
  1. <?php
  2. backgroud: url(../katalog/obrazek.jpg);
  3. ?>


i powinno pomoc


dobrze...to z CSS...a co z grafiką ?

ja tam nie mam tylko "tła"

są obrazki...
oomaster
W takich sytuacjach musisz cały kod poprawić tam gdzie masz odwołania do plików zrobione w taki sposób:

Cytat
/katalog/obrazek.jpg


Musisz zamienić na:

Cytat


Czyli podać pełną ścieżkę do pliku. smile.gif
bełdzio
w head wstaw:

Kod
<base href="http://TwojaStrona.pl/" />
stirith
Tak jak mówiłem odwoływanie się "bezpośrednio" do pliku mija się z celem...

A jak to się robi w FORACH ? czy jakichś dużych CMS ? Przecież tam też się to "wszystko zmienia"...jak tam jest ustawione ?


A ta funkcja "base" to bezpieczne narzędzie ? tongue.gif
phpion
Ja zawsze stosuję ścieżki bezwzględne, ale nie ścieżki pełne. Przykładowo, aby wyświetlić obrazek odwołuję się do niego poprzez:
Kod
/img/obrazek.gif

Analogicznie wczytując plik ze stylami:
Kod
/css/style.css

W samym pliku ze stylami również podaję ścieżki bezwzględne (np. do ustawiania graficznego tła).

Całość działa bez najmniejszego problemu bez względu na to, jak wygląda adres.
stirith
Zaczynam już poprawiać Twoim sposobem...tylko że mam problem...bo jak mam

Kod
include("/plik.php")


i jest źle....bo ten plik.php faktycznie znajduje się (względem tego pliku)

Kod
../plik.php


jak w include dać ściezke bezwzględną (nie pelną) ?
phpion
Nie, zauważ, że PHP działa po stronie serwera. On musi mieć ścieżki względem serwera czyli po prostu zostaw je w spokoju smile.gif Obrazki, style, js itd. działają po stronie przeglądarki i to je musisz odpowiednio wczytać. Czyli zmieniasz ścieżki tylko i wyłącznie dla tych elementów, które działają po stronie przeglądarki, a nie serwera.

* przeczytałem co napisałem i reasumując:
- pliki php wczytujesz w oparciu o faktyczne położenie plików na serwerze
- pliki css i obrazki wczytujesz względem DOCUMENT_ROOT
stirith
No dobrze...ale..

Jak pozniej uwtorze w mod_rewrite link:

4/1/plik.html

To include nie znajdzie pliku...bo w kodzie będzie "../header.php" -> a przy "nowym" pliku musi być "../../header.php"...

Tak to będzie ? czy jestem w błedzie ?



..........

Doczytałem co napisałeś...

Dzięki smile.gif Idę to sprawdzić smile.gif
phpion
Cytat(stirith @ 19.04.2008, 11:16:32 ) *
Tak to będzie ? czy jestem w błedzie ?

Nie tak będzie, jesteś w błędzie.
stirith
Mam jeszcze jedno pytanie :


Jak zrobie przez mod_rewrite te linki np : 3/4/1.html...

To jak to mam wstawić do kodu strony ? -> bo to co napisalem wyzej sie tworzy "dynamicznie"....
phpion
Normlanie:
  1. <a href="/3/4/1.html">Link</a>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.