Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mod_rewrite, <base> i niedziałające odnośniki do obrazków
Forum PHP.pl > Forum > Po stronie przeglądarki
starach
Cześć.
Chciałbym ujednolicić trochę kod stron poprzez wydzielenie wszystkich styli do zewnętrznych plików CSS.
Problem leży w stosowaniu mod_rewrite. Gdyż jeśli mam obrazek znajdujący się pod adresem www.domena.com/obrazki/logo.jpg a obecny url to www.domena.com/strona/parametr/ i kiedy wpiszę w parametrze background:url('obrazki/logo.jpg') to się on nie wyświetli.
Rozwiązaniem jest zastosowanie tagu <base> niestety działa ono tylko dla stylów które są umieszczone wewnątrz kodu HTML,
natomiast nie działają kiedy są przywoływane z zewnętrznego pliku CSS.

Ktoś wiec jak umieścić cały arkusz stylów w osobny pliku dołączanym tagiem <link> i który rozwiązuje powyższy kłopot ?
wewior
base to nie jest wg mnie zbyt dobre rozwiazanie, w takiej sytuacji powinienes sie wg mnie odwolywac do obrazkow przez sciezke bezwzgledna, tzn wczytujesz /img/obrazek.jpg i to powinno rozwiazac problem, mozna jeszcze kombinowac przez ustalenie wyjatkow dla obrazkow w .htaccess ale to juz wiecej zabawy i musialbys poszukac jakiegos gotowego kodu z wyjatkami dla wymaganych rozszerzen
zbig
Witam !
Fragment mojego .htaccess

Kod
RewriteEngine on
RewriteCond $1 !^(index\.php|image|Css)
RewriteRule ^(.*)$ /index.php/$1 [L]


W RewriteCond definiujesz katalogi do ktorych linki nie beda rewritowane

Po takim RewriteCond masz dostep do katalogow image i Css z zewnetrznego linku

Pozdrawiam
starach
Nikt mnie nie rozumie :chlip: biggrin.gif
Nie zrozumieliśmy się. W kodzie mojej strony umieściłem coś takiego:
  1. <base href="{CST-DIR_HREF_TMPLS}default/" />
  2. <link href="css/main.css" rel="stylesheet" type="text/css">
  3. <style type="text/css">
  4. body { background:url('images/background.gif'); }
  5. .header { background:url('images/background_header.gif'); }
  6. .logo { background:url('images/logo2.gif'); }
  7. .logo_text { background:url('images/logo_text6.gif'); }
  8. .flags .f_en { background:url('images/flag_en.gif'); }
  9. .flags .f_pl { background:url('images/flag_pl.gif'); }
I obrazki działają, ale nie chce walić tutaj znacznika style tylko po to żeby mi obrazki działały.
Jeśli umieszczę bezwzględną ścieżkę do obrazków będę musiał się strasznie chrzanić ze zmianą ich w przypadku zmiany domeny.
Natomiast użycie zmiennej szablonowej do wszystkich obrazków też na nic mi się nie zda bo wydajność spadnie,
a znacznika style i tak się nie pozbędę z kodu HTML :/ Jedynym w miarę sensownym wyjściem wydaje mi się jest utworzenie skryptu php który będzie generował styl, ale to też jest mi nie w smak. Ehh dobra niech już zostanie ten znacznik style kicham na niego.
Dlaczego swoją drogą uważasz że używanie base nie jest dobrym rozwiązaniem ?
wewior
nie musisz dodawac domeny zeby miec bezwzgledna sciezke, teraz masz cos takiego:
images/obrazek.jpg
problem w tym ze jesli korzystasz z rewritow w postaci katalogow lub w inny sposob odwolujesz sie skryptami z poza katalogu w ktorym jest katalog images/ to obrazek sie nie wczyta, ale jesli bedziesz sie odwolywal w taki sposob:
/images/obrazek.jpg
wtedy bedziesz mial dostep do obrazka z kazdego poziomu, oczywiscie warunek zeby strona byla w glownym katalogu a obrazki najlepiej w katalogu o krotkiej nazwie nawet moze i/ inaczej bedziesz musial faktycznie robic odwolania po katalogach a to juz powinno sie ladowac z jakiejs konfiguracji zeby tego nie bylo w 100 miejscach
WebCM
Cytat
warunek zeby strona byla w glownym katalogu
Tu jest problem. Na niektórych hostingach adres twojej strony to: nazwa_hostingu.com/twoja_nazwa. URL w <base> musi być pełny - wtedy problem z CSS nie występuje - przynajmniej na localhost.

@wewior: Dlaczego <base> to złe rozwiązanie?
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.