Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] Problem z htaccess, ustawienie / na końcu - przyjazne linki
Forum PHP.pl > Forum > Przedszkole
d.stp
Witam,

mam taki htaccess:

Kod
Options FollowSymLinks
RewriteEngine On
DirectoryIndex index.php
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^([^,]*)/([^,]*)/([^,]*).html$ index.php?page=$1&cat=$2&id=$3 [L]
RewriteRule ^([^,]*)/([^,]*)?/$ index.php?page=$1&cat=$2 [L]
RewriteRule ^(.*)?/$ index.php?page=$1
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]


i ładnie działa, ale chciałbym zrobić, że na końcu nie musi być "/". Wygooglowałem że trzeba dać pytajnik za slashem, ale jak zmienię to:

Kod
RewriteRule ^(.*)?/$ index.php?page=$1


na to:

Kod
RewriteRule ^(.*)/?$ index.php?page=$1


to nie ładuje mi styli. Mam ustawiony base href odpowiednio, ale nie pomaga. Czy tylko zmiana na linki bezpośrednie może pomóc ?
nospor
Dodaj warunek, ktrory wyklucza istniejace pliki i katalogi. Pewnie style ci sie lapią na to co teraz masz.
d.stp
O to chodziło?

Kod
Options FollowSymLinks
RewriteEngine On
DirectoryIndex index.php
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^([^,]*)/([^,]*)/([^,]*).html$ index.php?page=$1&cat=$2&id=$3 [L]
RewriteRule ^([^,]*)/([^,]*)/?$ index.php?page=$1&cat=$2 [L]
RewriteRule ^(.*)/?$ index.php?page=$1
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]


Niestety dalej to samo. Po wpisaniu urla xxx.pl/xxx lub xxx.pl/xxx/ nie ładuje w ogóle odpowiedniej podstrony, tak jakby w ogóle nie działało.
nospor
Tak, o to chodzilo.

Jak dalej to samo? Wczesniej pisales ze nie laduje ci styli, z teraz piszesz, ze nie laduje calej strony. Zdecyduj sie, ustal jedną wersje zdarzen bysmy wiedzieli na czym stoimi
d.stp
Od początku nie ładowało odpowiedniej podstrony i styli. Czyli jak wchodzę na xxx.pl/xxx to mam główną + brak styli. Jak wchodzę na główna xxx.pl to brak styli. Aha i nie ładuje jeszcze obrazków.
nospor
Ja tam zawsze robie tak:
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule (.*) index.php/page=$1 [L]

I jakos zawsze dziala. Przestan sie zajmowac tym / i po sprawie
A jesli i moja poprawka ci nie dziala, to pewnie inne twoje regulki psuja wszystko. Zacznij od mojej dokladnej wersji, a potem dodawaj sobie pokolei swoje
d.stp
No to bardzo dziwne, bo dałem takie coś:

Kod
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/?$ index.php?page=$1


I teraz style i obrazki ładują się odpowiednio, ale po wejściu w url.pl/podstrona/ nie ładuje się podstrona. Jak wejdę na url.pl/podstrona to działa - podstrona, style i obrazki się ładują. Co może być nie tak ?
nospor
No bo masz / na koncu. W php odbierajac PAGE musisz pozbyc sie tego /. TO chyba oczywiste smile.gif
Uzyj trim() ze znakiem /

No i pisalem:
Nie: ^(.*)/?$
a: ^(.*)$
Ja naprawde po chinsku pisze?
d.stp
... dzięki biggrin.gif biggrin.gif biggrin.gif

a jednak nie...

Kod
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^,]*)/([^,]*)$ index.php?page=$1&cat=$2 [L]
RewriteRule ^(.*)$ index.php?page=$1


Teraz po wejściu w podstronę nie ładuje styli i obrazków i podstrony...
nospor
Bo sciezki do styli i obrazkow nalezy podawac pelne a nie uproszczone.

nie: styl.css
a: http://mojastrona.pl/styl.css

Wowczas wszystko smiga bez problemow
d.stp
Ale cuda na tej mojej stronie się dzieją...

Po wklepaniu w przeglądarkę adresu linkdomojejstrony.pl/style.css wyświetla mi się strona główna. Link do styli na pewno jest dobry... oczywiście w kodzie podmieniłem te linki co mówiłeś na bezpośrednie, ale dalej nie działa dlatego wklepałem bezpośredni link do przeglądarki żeby upewnić się, że wyświetli się plik ze stylami no i kaszanka, pokazuje się główna.

htaccess aktualny:

Kod
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^,]*)/([^,]*)$ index.php?page=$1&cat=$2 [L]
RewriteRule ^(.*)$ index.php?page=$1
nospor
Jestes absolutnie pewien ze podales poprawny link do stylu w bezposrednio w przegladarce?
Jesli tak, to wywal htaccess i wklep jeszcze raz ten sam link. Jak sie wyswietli, to faktycznie w 100% poprawny wink.gif
d.stp
Tak, na 100% poprawny. Zrobiłem tak za nim przeczytałem to co napisałeś. Po usunięciu htaccess i wklepaniu tego linku do styli ładuje się ok.
nospor
Czyli podstrony sie laduja ale nie laduje sie style i obrazki?
A nie masz przypadkiem na stronie ustawionego baseurl lub cos podobnego?

A wez dla testu uzyj dokladnie takiego htaccess

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?page=$1

dokladnie
d.stp
Mam ustawione base href (<base href="url" /> ) ale to na 100% nie przez to, bo te twoje htaccess co dałeś wyżej działa elegancko. Wszystko się ładuje odpowiednio, działa z / i bez. Nawet nie muszę podawać bezpośredniego adresu do styli i obrazków.

Tylko teraz jest problem bo jak dodam:

Kod
RewriteRule ^([^,]*)/([^,]*)$ index.php?page=$1&cat=$2 [L]


Całość:

Kod
Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^,]*)/([^,]*)$ index.php?page=$1&cat=$2 [L]
RewriteRule (.*) index.php?page=$1


to już nie działa. Na stronie głównej brak styli, obrazków. Podstrony nie ładują się w ogóle (wyśw. się główna) + brak styli i obrazków.
nospor
Wydaje mi sie, ze to powinno wygladac mniej wiecej tak:


RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&cat=$2 [L]
d.stp
Dalej to samo sad.gif

Chociaż nie... teraz ładuje podstrony ale nie ładuje styli i obrazków. Adresy są bezpośrednie... Po wejściu w adres styli wyświetla się główna...
nospor
jakos z tych regulek nigdy nie bylem mocny i kurcze nie widze tu bledu....

A sprobuj to rozbic:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&cat=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?page=$1 [L]

lub tak:

Options +FollowSymlinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&cat=$2 [L]

d.stp
Oba podane przez ciebie sposoby działają, ale nie wydaje mi się to najlepszym rozwiązaniem biggrin.gif czegoś takiego jeszcze nie widziałem wink.gif chyba przesiądę się na przyjazne linki po stronie php bo z tym htaccess zawsze są jakieś problemy :/
nospor
Dzialają? Call me masta biggrin.gif

Zas co do php, to tak, ja juz dawno sie przesiadlem na php, bo niestety przy powazniejszych rzeczach to albo jest kupa roboty w htaccess albo wrecz nie da sie tego zrobic jak trzeba
d.stp
Taa, jest ok wszystko. Style, obrazki i podstrony odpowiednio się ładują. Nawet nie trzeba podawać bezpośredniego linku dzięki base href. Na szczęście to bardzo mała strona i takie rozwiązanie mi wystarczy biggrin.gif biggrin.gif

Dzięki za pomoc
nospor
Cytat
Nawet nie trzeba podawać bezpośredniego linku dzięki base href
Do tego base href lepiej sie nie przyzwyczajaj i lepiej go usun i przerzuc sie na pelne adresy. Pamietam ze z jakiegos dosc powaznego powodu ja wlasnie zrezygnowalem z base href bo w pewnym momencie mialem z nim tylko same problemy. Niestety nie pamietam o co chodzilo biggrin.gif
d.stp
No i chyba następny błąd pewnie z tym związany dlatego nie zakładam nowego tematu biggrin.gif

Mam link: http://url.pl/cos/hash

Po wejściu w ten link chcę zapamiętać hash i przekierować do innej podstrony czyli:

$_SESSION['hash'] = $_GET['hash'];
header("Location: http://url.pl/podstrona")

i na podstronie chcę wyświetlić ten hash:

echo $_SESSION['hash'] i pustka. var dump też cisza. session_start() jest
Turson
Rozumiem, że masz index.php?cos=hash zamienione na przyjazny link, więc w cos.php pobierasz parametr $_GET['cos'] i zapisujesz w sesji.
d.stp
Dobra, działa. Dzięki
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.