![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 27.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
Struktura linków na stronie będzie taka:
www.domena.com/nazwa-kategorii www.domena.com/nazwa-kategorii/ - link do kategorii, gdzie nazwa będzie składać się z takich znaków: 'a-z', 'A-Z', '0-9', '-' www.domena.com/nazwa-kategorii/4 www.domena.com/nazwa-kategorii/4/ - link do strony w kategorii, naturalnie numer strony będzie składał się wyłącznie z: '0-9' do rozpoznawania adresów mam taki plik .htaccess
1. po wejściu na stronę naturalnie w php wartości $category i $page będą sprawdzane czy istnieją i w przypadku gdy nie istnieją chciałbym wywalić komunikat o błędzie 404 poprzez php, i teraz pytanie jakiego kodu php powinienem urzyć? 2. jak zrobić w pliku .htaccess że wszystkie adresy które nie dopasują sie do żadnej z powyższych regółek zostaną przekierowane na jeden konkretny adres np. /blad.php 3. styczność z mod_rewrite mam dopiero od kilku dni więc prosił bym by ktoś zerknął na powyższy kod pod względem poprawności (na powyższe adresy) oraz optymalizacji (czasu wykonywania) -------------------- |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
1. normalnego.. robisz kod strony np. 404.php i kod który sprawdza czy jest taki art.. jak nie ma to dajesz include("404.php");
2. chyba tak: Kod RewriteRule ^([^a-zA-Z0-9-]+) blad.php [L] RewriteRule ^([^a-zA-Z0-9-]+)/([^0-9]+) blad.php [L] oznacza to.. jeśli adres nie zgadza się z wzorem ro wyświetl blad.php (takie małe doszkolenie: "W nawiasach kwadratowych znak '^' ma inne znaczenie. Oznacza ono zaprzeczenie, czyli jeśli umieści się je przed znakiem lub zakresem, to ten znak lub zakres nie będzie mógł się pojawić w tym miejscu." http://webmade.org/kursy-online/wyrazenia-...ne-kurs-php.php ) 3. nie lepiej poprostu dać tak: Kod RewriteEngine On ? bez tych 2 lini? jeśli dasz $ na końcu to wtedy gdy znajdzie się / to będzie błędnie działać... ale ten dolar nie potrzebny... a bez niego będzie działać nie zależnie czy będzie /artkul1/ czy /artykul1 czy /artykul1/dsggsd zawsze wywali index.php?category=artykul1RewriteRule ^([a-zA-Z0-9-]+)/ index.php?category=$1 [L] RewriteRule ^([a-zA-Z0-9-]+)/([0-9]+) index.php?category=$1&page=$2 [L] Proste nie? Edit: nie wiem skąd mi się wzieło to o artykulach.. skąd w ogóle pomysł że chcesz arty robić... nie wiem:P w każdym bądz razie nie przejmuj się tym że cały post o artach... nie chce mi się zmieniać.. Ten post edytował dadexix 8.01.2008, 19:07:19 -------------------- "Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...] Grins: mów normalnie do mnie a nie po polsku Ja: normalnie to znaczy jak? Grins: No w PHP... inaczej mój parser ledwo kuma:) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 113 Pomógł: 0 Dołączył: 27.12.2003 Ostrzeżenie: (0%) ![]() ![]() |
1. normalnego.. robisz kod strony np. 404.php i kod który sprawdza czy jest taki art.. jak nie ma to dajesz include("404.php"); tak sprawdzanie czy dany 'art' istnieje jest na samym początku skryptu, i mnie chodzi o to ze ja nie chce po prostu wyświetlić jakiejś tam informacji o błędzie 404, tylko chce wysłać w nagłówku ( header() ) informacje o błędzie do wyszukiwarki i dopiero ona ma wyświetlić swoją domyślną stronę błędu 2. chyba tak: Kod RewriteRule ^([^a-zA-Z0-9-]+) blad.php [L] RewriteRule ^([^a-zA-Z0-9-]+)/([^0-9]+) blad.php [L] oznacza to.. jeśli adres nie zgadza się z wzorem ro wyświetl blad.php
powyższy kod nie dziala, np na adres www.domena.com/dupa_/ wywala błąd 404, nie odsyła do blad.php 3. nie lepiej poprostu dać tak: Kod RewriteEngine On ? bez tych 2 lini? jeśli dasz $ na końcu to wtedy gdy znajdzie się / to będzie błędnie działać... ale ten dolar nie potrzebny... a bez niego będzie działać nie zależnie czy będzie /artkul1/ czy /artykul1 czy /artykul1/dsggsd zawsze wywali index.php?category=artykul1RewriteRule ^([a-zA-Z0-9-]+)/ index.php?category=$1 [L] RewriteRule ^([a-zA-Z0-9-]+)/([0-9]+) index.php?category=$1&page=$2 [L] Proste nie? i tutaj akurat chce by odsyłało do strony jedynie w przypadku poprawnego adresu, nie chce zeby np adres : '/artykul1/dsggsd' w ogole działał, zakres swoich adresów juz podałem wyżej www.domena.com/nazwa-kategorii www.domena.com/nazwa-kategorii/ www.domena.com/nazwa-kategorii/4 www.domena.com/nazwa-kategorii/4/ i nic wiecej, wszystko inne chce wysłać np do pliku blad.php (podpunkt 2 tego tematu) i tam w php wywalić blad 404 (podpunkt 1 tego tematu) Ten post edytował Dynuel 8.01.2008, 19:23:45 -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 439 Pomógł: 21 Dołączył: 28.06.2007 Skąd: Bielsko-Biała Ostrzeżenie: (0%) ![]() ![]() |
Cytat powyższy kod nie dziala, np na adres www.domena.com/dupa_/ wywala błąd 404, nie odsyła do blad.php a utworzyłeś plik blad.php? bo ten skrypt nie odeśle do strony bład tylko przepisze adres na błąd.php - na pasku i na stronie błędów będzie ciągle request_urljeśli chcesz uzyskać by na pasku adresu zniknął błędy adres a pokazał się adres strony blędu to w pliku błąd.php wpisz header("Location: $adres"); gdzie zmienna adres podaje plik strony błędu... oczywiście plik błąd.php być plikiem błędu:) Twój htaccess: Kod RewriteRule ^([^a-zA-Z0-9-]+) blad.php [L] objaśnienie(wg. numeru lini):RewriteRule ^([^a-zA-Z0-9-]+)/([^0-9]+) blad.php [L] RewriteRule ^([a-zA-Z0-9-]+)/([^0-9]+) index.php [L] RewriteRule ^([a-zA-Z0-9-]+) index.php?category=$1 [L] RewriteRule ^([a-zA-Z0-9-]+)/([0-9]+) index.php?category=$1&page=$2 [L] RewriteRule images/(.+) images/$1 [L] 1. jeśli nazwa kategorii jest zła wywala plik blad.php 2. jesli nazwa kategorii i strona sa nie poprawne wywala blad.php 3. jesli strona nie jest w cyfrach przenosi do index //mozesz wsawić błąd.php czy co tam chcesz:) chyba że Cie źle zrozumiałem i chcesz że jeśli ktoś da kat1/2/aaaa to wywali bład czy coś w tym stylu..? a przeszkadza Ci ta końcówka? jeśli Ci przeszkadza to daj Kod RewriteRule ^([a-zA-Z0-9-]+)/?$ index.php?category=$1 [L] RewriteRule ^([a-zA-Z0-9-]+)/([0-9]+)/?$ index.php?category=$1&page=$2 [L] 4. jeśli nazwa kategori jest dobra przepisuje adres 5. jesli nazwa kategorii i nazwa strony jest good przepisuje adres 6. przepisuje obrazki:) w takim wypadku możesz to zrobić inaczej... robisz katalog images a w jego htaccess RewriteEngine Off Cytat i nic wiecej, wszystko inne chce wysłać np do pliku blad.php (podpunkt 2 tego tematu) i tam w php wywalić blad 404 (podpunkt 1 tego tematu) Kod <?
header("HTTP/1.0 404 Not Found"); echo "404/ nie ma takiej strony"; ?> -------------------- "Na przykład zmiennej $jestem_najlepszy przypisujemy wartość logiczną TRUE"
Ja: użyj funkcji[...] Grins: mów normalnie do mnie a nie po polsku Ja: normalnie to znaczy jak? Grins: No w PHP... inaczej mój parser ledwo kuma:) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 07:14 |