Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mod_rewrite][CSS][PHP]CSS i Pliki graficzne nie chcą się wczytywać.
Forum PHP.pl > Forum > Przedszkole
xbigos
Witam serdecznie.

Zacznę od początku:

Muszę przerobić pewien skrypt (bardzo badziewny) w którym metody php generowały cały ciąg HTML do obrazków itp. Nie wykorzystuje w ogóle stylów.
Tak więc stworzyłem sobie katalog do styli i umiescilem tak plik css. No i lipa nie działa a więc

Struktura katalogów

katalog_serwisu
|
|----htdocs
| |-----------themes
| | | ------- nazwa_mojego_tematu
| | |--- _img
| | |--- _style
| || |-----style.css
| | |tu sa wszystkie pliki szablonów.
|----lib

No i niestety gdy w pliku style.css dodaję jakikolwiek rodzaj ścieżki to żaden obrazek szablonu mi się nie wczytuje. Styl css działa.
Dla przykładu:
  1. .right-bot-simple{
  2. background-image:url('/themes/new_theme/_img/box_simple/right_bot.gif');
  3. background-position: right bottom;
  4. background-repeat: no-repeat;
  5. }


Czytałem poprzednie tematy o mod rewrite ale niestety żaden nie pomaga. Dodaję <base href...> i nic.
Czy da się to jakoś rozwiązać z poziomu mod_rewrite?

EDIT: Ort.
bikerszymek
Mialem taki sam problem, u mnie pomogla zmiana sciezek do plikow ze stylami na bezwzgledne. zycze powodzenie. pzdr
erix
Stylów, jak już.

A co masz w htaccess?
vokiel
Jeśli htdocs jest katalogiem nadrzędnym (startowym) projektu to w css spróbój ustawić ścieżki od ../
xbigos
Cytat(erix @ 22.08.2009, 20:42:19 ) *
Stylów, jak już.

Przepraszam
Cytat(erix @ 22.08.2009, 20:42:19 ) *
A co masz w htaccess?


<FilesMatch "\.inc|\.html\.|~">
Order allow,deny
Deny from all
</FilesMatch>

ErrorDocument 404 /custom_404.php

RewriteEngine On
RewriteBase /nazwa_sklepu/htdocs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^zz/([0-9]+) /plugins/_SPayment/confirm.php?zagiel_session_id=$1 [L]

itd itd.

Cytat(vokiel @ 22.08.2009, 20:43:09 ) *
Jeśli htdocs jest katalogiem nadrzędnym (startowym) projektu to w css spróbój ustawić ścieżki od ../


w katalogu htdocs znajduje sie index.php a takie sciezki nie dzialaja:)
erix
Cytat
itd itd.

Zgaduję - masz kilka RewriteRule potem, a RewriteCond tylko do pierwszej. I to jest przyczyną problemów.
xbigos
Niestety nie.

A wiec nawet powtórzenie RewriteCond przed każdą regułą nie pomaga. Styl css działa. Wszystkie elementy poprawnie się wyświetlają oczywiście poza plikami graficznymi z pliku .css. nie dziala nawet url(http://domena.pl/sciezka/plik.gif);

Dodam, że ręczne wywołanie pliku działa więc pomyłka w tym miejscu jest wykluczona.
erix
Daj lepiej cały htaccess.
xbigos
CODE

<FilesMatch "\.inc|\.html\.|~">
Order allow,deny
Deny from all
</FilesMatch>

ErrorDocument 404 /custom_404.php

RewriteEngine On

RewriteRule ^zz/([0-9]+) /plugins/_SPayment/confirm.php?zagiel_session_id=$1 [L]

RewriteRule ^za/([0-9]+) /plugins/_SPayment/confirm.php?zagiel_session_id=$1&status=zagiel_FAIL [L]

RewriteRule ^sm,([^,]+),[^.]+.html /go/_map_site/index.php?lang=$1 [L]

RewriteRule ^s,([^,]+),([^.]*).html /go/_search/full_search.php?search_query_words=$2&lang=$1 [L]

RewriteRule ^p,([^,]+),([^,]+),([^.]+).html$ /go/_info/index.php?user_id=$2&lang=$1 [L]

RewriteRule ^pr,([^,]+),([^.]+).html$ /go/_promotion/index.php?column=$2&lang=$1 [L]

RewriteRule ^f,([^,]+),([^.]+).html$ /go/_files/index.php?file=$2&lang=$1 [L]

RewriteRule ^c,([^,]+),([0-9]+),([\-0-9]+),([0-9]+),([0-9]+),([a-z]+),([^.]+).html$ /go/_category/index.php?idc=id_$2&page=$4&producer_id=$5&order=$3&record_row=$6&scat_name=$7&lang=$1 [L]

RewriteRule ^c,([^,]+),([0-9_]+),([\-0-9]+),([0-9]+),([0-9]+),([a-z]+),([^.]+).html$ /go/_category/index.php?idc=$2&page=$4&producer_id=$5&order=$3&record_row=$6&scat_name=$7&lang=$1 [L]

RewriteRule ^l,([^.]+).html$ /go/_lang/index.php?lang=$1 [L]

RewriteRule ^news,([^,]+),([0-9]+),([^.]+).html /plugins/_newsedit/news/$2/index.php?lang=$1 [L]


oryginalny plik.

Do plików w css odwołuję się poprzez /sciezka/plik.gif
base href ustawione
erix
A gdzie masz te RewriteCond? tongue.gif
xbigos
Wyrzucony bo i tak nic to nie dawało. Ponieważ w każdej możliwej konfiguracji było. I zaraz po RewriteEngine On i pomiędzy każdą regułą.

Tak to wyglądało początkowo z mojej strony.

RewriteEngine On
RewriteBase /nazwa_sklepu/htdocs/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

a za tym wszystkie inne reguły były.
cojack
Kod
<FilesMatch "\.inc|\.html\.|~">
Order allow,deny
Deny from all
</FilesMatch>


wywal to i zobaczysz nowy rok.

Jak nie pomoże to jeszcze base w meta albo base w htaccess.
thek
Z css mogą być czasem problemy, gdy masz coś takiego jak opisujesz. Jeśli w css ustawiasz background-image to stosuj adresowanie nie od katalogu głównego, tylko adresowanie od tego pliku css... Gdy masz go więc gdzieś zagnieżdżonego to będziesz musiał się przekopać przez strukturę katalogów od pliku css do pliku obrazka. Jeśli dobrze odczytuję strukturę katalogów to będziesz musiał użyć
Kod
background-image:url('../_img/box_simple/right_bot.gif');

by wyjść z katalogu _style, wejść do _img z obrazami i dalej kopać do konkretnego obrazka. U mnie taka sytuacja czasem występuje, gdyż nie zawsze pliki css wrzucam do katalogu głównego na serwerze tylko gdzieś zagłębiam w katalogu styles (często dołączam do jednej strony kilka arkuszy styli) lub jeszcze głębiej i stąd wiem, że to jedna z przypadłości takiego zachowania
erix
Cytat
a za tym wszystkie inne reguły były.

Musisz więc powtórzyć RewriteCond dla każdego RewriteRule z osobna. Na łatwiznę, wystarczy na początku:

[APACHE] pobierz, plaintext
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
  3. RewriteRule .* - [L]
[APACHE] pobierz, plaintext
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.