Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: RewriteRule i brak ładującego się CSS'a
Forum PHP.pl > Forum > Serwery WWW
Garrett
Witam

Podczas konfiguracji linków przyjaznych natrafiłem na następujący problem:
Pierwotny adres przykładowego newsa na stronie glównej ma taką postać:
/index.php?id=58&action=pokaz

reguła re-write w pliku .htaccess wygląda następująco:
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2

W przypadku wejścia z bezpośredniego adresu, strona wyświetla się prawidłowo, natomiast, gdy użyję adresu /news,58/pokaz/, strona ładuje się, ale bez CSS'a ohno-smiley.gif

Czy ktoś byłby w stanie pomóc mi w rozwiązaniu tego problemu?
nospor
Problem poruszany petryliard razy....

Linki mają wyglac tak:
http://pelnyadresdostrony.pl/plik.css

a nie tak:
plik.css
trueblue
Możesz jeszcze użyć: http://www.w3schools.com/tags/tag_base.asp
nospor
Osobiscie nie polecam stosowanie BASE. Kiedys tez tego uzywalem, ale mialem jakies dzikie przeboje z tym w jakiejs sytuacji. Nie pamietam o co chodzilo, ale od tamtej pory unikam tego jak ognia smile.gif
Garrett
O ile dobrze zrozumiałem, jeśli rewrite jest włączony, przeglądarka nie rozumie zapisu <link href="default.css" rel="stylesheet" type="text/css" /> ?
trueblue
Rozumie.

Masz niedoprecyzowane reguły w htaccess. Można wykluczyć przepisywanie jeśli dotyczy np. plików .css, .js, obrazków, itd.
Garrett
W takim razie bardzo prosiłbym o polecenia na wykluczenie tych wszystkich rzeczy (właśnie obrazki zaczęły mi się sypać...)
trueblue
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2
Garrett
Cytat(trueblue @ 5.09.2014, 12:37:59 ) *
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2


Niestety po wpisaniu tego co podałeś, nadal nie działają obrazki, ani arkusze stylów css.
trueblue
Jak wygląda cały htaccess?
Garrett
  1. #zablokowanie możliwości przeglądania katalogów strony
  2. Options -Indexes
  3. #blokujemy (lub zezwalamy - "allow") dostęp do strony po IP
  4. deny from 123.456.789.000
  5.  
  6. #strona startowa (można dowolnie edytować!) :)
  7. DirectoryIndex index.php
  8.  
  9. Options FollowSymLinks
  10. RewriteEngine On
  11. RewriteBase /
  12.  
  13.  
  14. RewriteRule ^newsy$ index.php
  15. RewriteRule ^pobierz$ pobierz.php
  16. RewriteRule ^galeria$ galeria.php
  17. RewriteRule ^mix$ mix.php
  18. RewriteCond %{REQUEST_FILENAME} !-f
  19. RewriteCond %{REQUEST_FILENAME} !-d
  20. RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2
  21.  
  22. #RewriteRule ^news,([0-999]+)\.html$ index.php?id=$1
  23.  
  24. RewriteRule ^kontakt$ kontakt.php [L]
  25. #L - last line
  26.  
  27. :Location /*.php
  28. Use php54
  29. :Location
  30.  
  31. :Location /cron-weekly.php
  32. Access deny all
  33.  
  34. #ostatnia linia musi być pusta!
  35.  
trueblue
Te dwa warunki powinny zadziałać, ale tylko do dla tego przepisywania:
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2

Czy właśnie tu jest źle?
Garrett
Nie mam pojęcia, bo pierwszy raz zajmuje się formułowaniem wyrażeń regularnych w htaccesie ;D Pytasz bo nie wiesz czy pytasz bo mnie sprawdzasz? biggrin.gif
trueblue
Pytam, bo obecnie pliki powinny ładować się poprawnie, ale tylko pod adresami o budowie, która jest w tej regule, a nie wiem czy Ty pisząc o tym, że się nie ładują testujesz pod tego typu adresem, czy innym.
Garrett
TYLKO POD TYM ADRESEM NIE DZIAŁAJĄ. Hiperłącza też mi się posypały, dodają "news,XX/pokaz/" przed właściwą ścieżką... Już powoli nie ograniam co się dzieje... facepalmxd.gif

Zauważyłem coś takiego, reguła

RewriteRule ^news,([0-999]+)$ index.php?id=$1

działa poprawnie, natomiast

RewriteRule ^news,([0-999]+)/$ index.php?id=$1
już nie (nie wczytuje sie css i obrazki...)


Może coś Ci to powie smile.gif
nospor
Regula tu nie ma nic do rzeczy....

jesli masz adres katalogowy, czyli taki: blabla/blabla to jak nie podasz pelnej sciezki to plik
plik.css bedzie szukany pod adresem blabla/plik.css (takie żądanie wysyła przeglądarka i htaccess nie ma tu nic do gadania) a nie pod adresem plik.css.

Dlatego tak wazne jest podawanie pelnych adresow do plikow js, css, czy obrazkow.
http://pelnyadres.pl/plik.css

Nie kombinuj wiec, tylko zacznij pisac w koncu poprawnie.
trueblue
Racja, nospor.

Chociaż ja byłbym nadal za base href, ewentualnie absolutnymi ścieżkami.
nospor
Cytat
ewentualnie absolutnymi ścieżkami.
A to o czym piszę, to niby co jest jak nie ścieżka absolutna? To jest pelna sciezka absolutna.

Jesli zas miales na mysli by pisac tak:
/plik.css to też do konca to nie jest poprawne. Bo jesli ktos ma glowny adres taki:
http://mojastrona/forum/index.php i pliki css leżą w katalogu forum to jak da /plik.css to znowu bedzie źle bo bedzie mu szukac w katalogu glownym. Dlatego należy konkretnie okreslac sciezki, a uniknie się glupich bledow i biedy, ze nagle przestalo dzialac...
trueblue
Miałem na myśli: sciezka="/blabla/plik.jpg".
nospor
Tak myslalem, dlatego edytowalem posta. Spojrz.
trueblue
Wtedy według mojego toku myślenia o ścieżkach absolutnych wyglądała by tak: "/forum/plik.css".
nospor
Zgadza sie. Wtedy tak smile.gif

Tylko bardzo czesto ludzie walą /plik.css, potem jakis modul ląduje w katalogu i nagle bida...

A jakby od razu odpowiednio przygotowali system, i walili pełną ścieżkę, z przygotowane zmiennej lub funkcji, to nie ma bidy.
Garrett
Panowie tu gadu-gadu a ja mam ustawione ścieżki bezwzględne dowszystkich dokumentow css i js w dokumencie i jakoś dalej nie działa
nospor
Jakos wierzyc mi sie nie chce wink.gif

1) Pokaz jak masz ustawione te sciezki do plikow
2) Pokaz jak wyglada adres w przegladarce, z ktorego odpalasz strone i ci nie dziala.
Garrett
A sie zamachnąłem... faktycznie nie dopisałem full adresu do jednej implementacji arkusza stylu smile.gif Dobra Panowie, wszystko działa, dziękówa za pomoc!!! biggrin.gif

Edit:
Mam jeszcze małe pytanie - jak przechwycić argument z geta, ale żeby nie był widoczny w adresie?

Buduję sobie statystyki odwiedzin pod własne potrzeby i chodzi mi konkretnie o przesłanie argumentu refer. Rozwiązaniem będzie tu zaszyfrowanie słowa i wciepanie go do adresu url czy jest na to jakiś inny, lepszy sposób?
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.