Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [RewriteRule] pliki css i obrazki
!*!
post 16.01.2009, 16:32:28
Post #1





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Kod
RewriteEngine On
RewriteBase /

RewriteRule ^(css)-([a-z0-9_]+)-([a-z0-9.]+)$ /files/user/$2/css/$3


w html dam

Kod
<link rel="stylesheet" href="css-'.$nazwa.'-style.css" type="text/css" />


i css jest wczytywany bez problemu, jednak... nie działają obrazki które są w tym samym katalogu co plik css.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
sowiq
post 16.01.2009, 18:16:32
Post #2





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Nie dziwię się smile.gif
Nie linkuj do obrazków jako url('obrazek.gif'), tylko url('/files/user/{nazwa_stylu}/css/obrazek.gif').

A to dlatego, że przeglądarka dostaje adres arkusza stylów w ten sposób, jakby był on w katalogu głównym, a nie w /files/user... - to serwer zapewnia, że wczytuje się plik akurat z tej lokalizacji. A ponieważ adresy obrazków podaje się relatywnie do arkusza CSS, to musi być tak, jak Ci napisałem powyżej winksmiley.jpg
Go to the top of the page
+Quote Post
!*!
post 17.01.2009, 01:19:11
Post #3





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


a nie mogę tego ustawić url('obrazek.gif') ? I jednocześnie zamaskować jakoś RR? Nie mam za bardzo możliwości zmiany w plikach css, interesuje mnie tylko zamaskowanie adresu do nich


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
Pilsener
post 17.01.2009, 02:21:32
Post #4





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

Ostrzeżenie: (0%)
-----


Cytat
url('/files/user/{nazwa_stylu}/css/obrazek.gif')
- mało praktyczne. Jak użytkownik dodaje obrazek do kategorii to ma mieć
  1. <img src="obrazek.gif" />
- identycznie jak definiuje sobie style dla tej kategorii.

Zainteresuj się znacznikiem <base> i dla każdego URL ustawiaj ścieżkę, skąd mają być pobierane obrazki oraz skrypty JS etc.
Go to the top of the page
+Quote Post
!*!
post 17.01.2009, 03:06:55
Post #5





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Kod
pliki/user/stefan/css


to katalog oficjalny

chciałbym to zmienić na:

Kod
css-stefan-style.css


dlatego wpisuję:

Kod
RewriteRule ^(css)-([a-z0-9_]+)-([a-z0-9.]+)$ /pliki/user/$2/css/$3


Kod
<base href="css-'sefan'">


Kod
domek/index.php


w tym katalogu odwoluję się do plików css usera

aby to zrobić musiałem wpisywać

Kod
../pliki/user/stefan/css/style.css


teraz mam

Kod
css-stefan-style.css


I jest dobrze, ale.. bez obrazków, ustawienie base nic nie daje, a zdefiniować plików graficznych nie potrafię...


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post 17.01.2009, 13:24:26
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
I jest dobrze, ale.. bez obrazków, ustawienie base nic nie daje, a zdefiniować plików graficznych nie potrafię...

Kod
RewriteCond %{REQUEST_FILENAME} !-f

Przed regułką.

Ale z tego, co widzę, to i tak będziesz musiał osobną regułkę dla obrazków napisać, gdyż przeglądarka nie wie, gdzie to wszystko jest trzymane.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
sowiq
post 17.01.2009, 13:31:26
Post #7





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(erix @ 17.01.2009, 13:24:26 ) *
Ale z tego, co widzę, to i tak będziesz musiał osobną regułkę dla obrazków napisać, gdyż przeglądarka nie wie, gdzie to wszystko jest trzymane.

Będzie musiał napisać po jednej regułce dla każdego pliku CSS (są one trzymane z obrazkami w różnych katalogach). A z tego wynika, że i tak nie obejdzie się bez edycji plików CSS.
Go to the top of the page
+Quote Post
!*!
post 17.01.2009, 19:06:05
Post #8





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Czyli nie można tego ustawić... heh nie mogę zmienić zawartości plików css, niezłe ograniczenia :/ Nie ma innego sposobu zamaskowania ścieżki do pliku css? Pomijając sesję?

Ten post edytował !*! 17.01.2009, 19:07:18


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
erix
post 17.01.2009, 20:32:21
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A tak spytam, po co w ogóle maskować...?

Cytat
Pomijając sesję?

Trochę nie mogę sobie tego uzmysłowić... ;/

Ale tak, czy tak, skoro w plikach CSS masz ścieżki dostosowane do starego schematu i nie możesz ich zmieniać, to jaki jest sens całego przedsięwzięcia z mod_rewrite...? Serwer wie, że przekierowywujesz, przeglądarka nie.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
!*!
post 18.01.2009, 03:08:07
Post #10





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Dostałem w spadku serwis do "naprawy", niestety poprzedni admin nie był zbyt roztargnięty i dość ważne pliki umieścił w formie dość jawnej... Choćby dla tego chciałbym to jakoś zamaskować, aby nie była widoczna ścieżka do katalogów usera np. "../pliki/user/stefan/hasla/css" itp. nie wiem czemu ale jakoś nie ufam

Kod
../


w źródle strony... Taki jakiś mój nawyk :/


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
sowiq
post 18.01.2009, 12:34:18
Post #11





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Skoro dostałeś ten serwis do poprawy, to niby czemu nie możesz edytować CSS? Robisz tak:

w CSS:
Kod
url('img.gif') -> url('nazwa_stylu-img.gif')

w .htaccess:
Kod
RewriteRule ^(styl1|styl2|styl3|inne_style)-([a-zA-Z0-9_])\.(gif|jpg|png\inne_rozszerzenia)$ pliki/user/$1/obrazki/$2.$3
(zależnie jaką masz ścieżkę do obrazków)

Robisz coś w tym stylu i masz po kłopocie. Zresztą, jeśli masz jakieś pliki niefortunnie umieszczone w ogólnodostępnym miejscu, to zawsze możesz odciąć do nich dostęp po wpisanie adresu do przeglądarki poprzez proste regułki .htaccess -> Protecting a single file

Ten post edytował sowiq 18.01.2009, 12:37:05
Go to the top of the page
+Quote Post
!*!
post 18.01.2009, 13:34:21
Post #12





Grupa: Zarejestrowani
Postów: 4 298
Pomógł: 447
Dołączył: 16.11.2006

Ostrzeżenie: (0%)
-----


Widzisz, bo to nie ja edytuje te pliki, ogólnie jest ok 340k ludzi, którzy zmieniają je praktycznie codziennie... Są przyzwyczajeni to wpisywania "url(obrazek.png)" więc sam rozumiesz... Mógłbym pozamieniać ręcznie adresy, tylko że to nie będzie kompatybilne wstecz, oraz wprowadzi mega zamieszanie... Liczyłem na to że reguły pomogą mi to jakoś rozwiązać, z zachowaniem tych samych adresów w plikach css.


--------------------
Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta).
Go to the top of the page
+Quote Post
sowiq
post 18.01.2009, 14:31:03
Post #13





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Musisz zrozumieć jedno. Jeśli dajesz w pliku CSS url('obrazek.gif'), a plik CSS wywołujesz przez ścieżkę /files/css/cos_innego, to przeglądarka będzie szukała obrazka w katalogu, z którego wywołany został plik CSS (ścieżki obrazków są relatywne do pliku CSS). A skoro stosujesz mod_rewrite, to przeglądarka widzi plik CSS, jakby był wczytywany z głównego katalogu. Tam też będzie szukała plików z obrazkami.

Masz co prawda jeszcze jedno, inne wyjście. Robisz coś w stylu:
Kod
RewriteRule ^([a-zA-Z0-9_]+)\.(gif|jpg|png)$ obrazki.php?id=$1.$2


W pliku obrazki.php robisz
  1. <?php
  2. header('Content-type: '.$type); // $type musisz ustalić na podstawie rozszerzenia
  3. @readfile('sciezka/do/plikow/'.$aktuany_styl.'/obrazki/'.$_GET['id']);
  4. // $aktualny_styl, tak jak mówiłeś, przechowujesz np. w sesji
  5. ?>


Oczywiście powyższy kod trzeba zabezpieczyć przed ścieżkami w stylu ../../../

2. wyjście - Redirect 302 w pliku php.

Nie wiem które lepsze - zależy od ruchu na stronie.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 07:00