Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [.htaccess][Rewrite] Problem z CSS i obrazkami
Forum PHP.pl > Forum > Serwery WWW > Apache
dami95
Mam oto taki plik .htaccess
[APACHE] pobierz, plaintext
  1. RewriteEngine on
  2.  
  3. #[kod odpowiedzialny za przekierowanie z www na adres bez www]
  4.  
  5. RewriteBase /
  6.  
  7. RewriteCond %{REQUEST_FILENAME} !-f
  8. RewriteCond %{REQUEST_FILENAME} !-d
  9. RewriteRule ^([0-9a-z_-]+)/([0-9a-z_-]+)$ index.php?page=$1&cat=$2 [L]
  10.  
  11. RewriteCond %{REQUEST_FILENAME} !-f
  12. RewriteCond %{REQUEST_FILENAME} !-d
  13. RewriteRule ^([0-9a-z_-]+)$ index.php?page=$1 [L]
[APACHE] pobierz, plaintext


Niestety, gdy wejdę na 'oferta/przyklad' na stronie nie ma obrazków oraz stylów CSS, przeczytałem jakieś 30 stron w Google i kilka tematów na forum i żaden sposób nie chce u mnie działać...
by_ikar
Podajesz ścieżki względne do obrazków, to jest:

Kod
<img src="images/obraz.jpg">


A w przypadku kiedy tworzysz wirtualne katalogi (/artykul/nazwa+artykulu itp, wtedy "/artykul/" jest wirtualnym katalogiem) to ten wirtualny wtedy jest dopisywany do twojego względnego adresu i adres wygląda tak:

Kod
<img src="/artykul/images/obraz.jpg">


Dlatego jak już się bawisz w htaccess, linki do css/js, obrazków oraz obrazków w css musisz podawać jako ścieżka bezwzględna. Albo pełen adres:

Kod
http://domena.pl/images/obraz.jpg


Albo ścieżkę bezwzględną (base url):

Kod
/images/obraz.jpg


PS. mam małe djvu, wydaje mi się że już tutaj na forum o tym pisałem :|
ShadowD
Możesz też zrobić kolejną regułę w htaccess przekierowującą image/xxx lub użyć metatagu baseurl.
dami95
Myślałem, że ten kod, ma temu zapobiec:
[APACHE] pobierz, plaintext
  1. RewriteCond %{REQUEST_FILENAME} !-f
  2. RewriteCond %{REQUEST_FILENAME} !-d
[APACHE] pobierz, plaintext


Dzięki za odpowiedź... Jak nie dam sobie rady tego ominąć, to jeszcze napiszę.
ShadowD
To co napisałeś oznacza mniej więcej tyle, że jeśli podana ścieżka jest plikiem lub katalogiem to ma przerwać wykonywanie reguły, czyli następujące przekierowanie na dole (pierwsze z kolejki) nie zostanie wykonane.

Problem jakiego się tyczy Twój przepadek ładnie opisał by_ikar, mianowicie:

Jeśli jesteś w katalogu głównym / i w plikach dodajesz obrazki czyli image/nazwa.png to w sumie całość wygląda tak /image/nazwa.png, czyli wydaje się ok i wszystko działa jak należy. Teraz jeśli przejdziesz do jakiegoś podkatalogu, czyli w Twoim przypadku "niby" parametru /news/ linki wyglądają image/nazwa.png to całość będzie /news/image/nazwa.png a na serwerze raczej takiego katalogu nie ma, więc całość się krzaczy.

Najłatwiejszym rozwiązaniem jest dodanie tagu <base /> z ścieżką projektu, wtedy każdy link będzie się od nie zaczynał i problem przypisywania katalogów z automatu zniknie, pamiętaj o dodaniu / przed każdym plikiem czyli linki do obrazków powinny wyglądać tak /image/nazwa.png.
dami95
Dokładnie tak zrobiłem, dzięki za pomoc!
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.