Garrett
5.09.2014, 10:10:48
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
Czy ktoś byłby w stanie pomóc mi w rozwiązaniu tego problemu?
nospor
5.09.2014, 10:11:40
Problem poruszany petryliard razy....
Linki mają wyglac tak:
http://pelnyadresdostrony.pl/plik.cssa nie tak:
plik.css
trueblue
5.09.2014, 10:16:21
nospor
5.09.2014, 10:22:30
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
Garrett
5.09.2014, 11:08:41
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
5.09.2014, 11:11:55
Rozumie.
Masz niedoprecyzowane reguły w htaccess. Można wykluczyć przepisywanie jeśli dotyczy np. plików .css, .js, obrazków, itd.
Garrett
5.09.2014, 11:23:34
W takim razie bardzo prosiłbym o polecenia na wykluczenie tych wszystkich rzeczy (właśnie obrazki zaczęły mi się sypać...)
trueblue
5.09.2014, 11:37:59
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2
Garrett
5.09.2014, 11:46:07
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
5.09.2014, 11:48:53
Jak wygląda cały htaccess?
Garrett
5.09.2014, 11:52:20
#zablokowanie możliwości przeglądania katalogów strony
Options -Indexes
#blokujemy (lub zezwalamy - "allow") dostęp do strony po IP
deny from 123.456.789.000
#strona startowa (można dowolnie edytować!) :)
DirectoryIndex index.php
Options FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^newsy$ index.php
RewriteRule ^pobierz$ pobierz.php
RewriteRule ^galeria$ galeria.php
RewriteRule ^mix$ mix.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news,([0-999]+)/(pokaz)/?$ index.php?id=$1&action=$2
#RewriteRule ^news,([0-999]+)\.html$ index.php?id=$1
RewriteRule ^kontakt$ kontakt.php [L]
#L - last line
:Location /*.php
Use php54
:Location
:Location /cron-weekly.php
Access deny all
#ostatnia linia musi być pusta!
trueblue
5.09.2014, 12:01:40
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
5.09.2014, 12:11:58
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?
trueblue
5.09.2014, 12:14:36
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
5.09.2014, 13:25:32
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...

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
nospor
5.09.2014, 14:10:05
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.cssNie kombinuj wiec, tylko zacznij pisac w koncu poprawnie.
trueblue
5.09.2014, 14:25:23
Racja, nospor.
Chociaż ja byłbym nadal za base href, ewentualnie absolutnymi ścieżkami.
nospor
5.09.2014, 14:29:17
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
5.09.2014, 14:30:25
Miałem na myśli: sciezka="/blabla/plik.jpg".
nospor
5.09.2014, 14:32:27
Tak myslalem, dlatego edytowalem posta. Spojrz.
trueblue
5.09.2014, 14:35:00
Wtedy według mojego toku myślenia o ścieżkach absolutnych wyglądała by tak: "/forum/plik.css".
nospor
5.09.2014, 14:38:22
Zgadza sie. Wtedy tak

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
5.09.2014, 14:52:26
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
5.09.2014, 14:57:57
Jakos wierzyc mi sie nie chce

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
6.09.2014, 11:49:42
A sie zamachnąłem... faktycznie nie dopisałem full adresu do jednej implementacji arkusza stylu

Dobra Panowie, wszystko działa, dziękówa za pomoc!!!
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.