![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 8.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
witam wszystkich forumowiczów!
Zacznę prosto z mostu. Otóż mam problem z plikiem .htaccess. Chciałbym zrobić ładne adresy dla strony. Chodzi o obsługę 3 plików php, a dokładniej index.php , download.php , news.php na razie wpisuje tak: Cytat www.przykladowastrona.pl/index.php -> wchodzę na stronę główną www.przykladowastrona.pl/index.php?name=o_nas -> wchodzę na stronę która ma identyfikator o_nas (pobierana z bazy) www.przykladowastrona.pl/index.php?name=o_nas&sub=autor -> wchodzę na stronę która ma identyfikator autor (jest to podstrona strony o_nas) www.przykladowastrona.pl/index.php?name=o_nas&sub=autor&part=bio -> wchodzę na stronę która ma identyfikator bio (jest to podstrona strony o_nas/autor) www.przykladowastrona.pl/download.php?id=12 -> pobiera plik o id=12 www.przykladowastrona.pl/news.php?id=113 -> wyświetla news o id=113 dlatego takie linki, ponieważ chcę w menu zaznaczać strony na których się znajduje. a chciałbym żeby linki wyglądały tak: Cytat www.przykladowastrona.pl/ www.przykladowastrona.pl/strony/o_nas.html (ew. www.przykladowastrona.pl/strony/o_nas/ nie wiem którą formę lepiej używać) www.przykladowastrona.pl/strony/o_nas/autor.html www.przykladowastrona.pl/strony/o_nas/autor/bio.html www.przykladowastrona.pl/download/12 (opcjonalnie ukośnik na końcu) www.przykladowastrona.pl/news/113 (opcjonalnie ukośnik na końcu) Próbowałem coś samemu wymyślić, poczytałem troszkę o mod rewrite i wymodziłem coś takiego: Kod Options +FollowSymLinks DirectoryIndex index.php RewriteEngine On RewriteBase / #dwie poniższe linie sprawdzają czy przypadkiem taki plik lub folder istnieje RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d #tego niżej nie jestem pewien i co do końca robi (powinno robić :P) #RewriteRule ^index\.php ./ [R=301,L] #dla pliku strony.php działa i mogę dawać adres tak: www.przykladowastrona.pl/strony/o_nas/ RewriteRule ^strony/([a-z0-9_]+)/?$ strony.php?name=$1 [L] #news działa podobnie RewriteRule ^news/([a-z0-9_]+)/?$ news.php?id=$1 [L] #RewriteRule ^(.*)$ index.php?kto=$1 [L,QSA] Nie do końca rozumiem o co chodzi z tymi znacznikami L, QSA ![]() I nie wiem jak zrobić warunki z tymi name, sub, part i żeby przekierowania szły do pliku index.php plus żeby wszystkie złe adresy szły do pliku 404.php Czy może lepiej zrobić żeby wszystko szło do pliku index.php i on robił sobie przekierowania wedle potrzeby. Doradźcie ![]() Na razie wykleiłem coś takiego: Kod Options +FollowSymLinks DirectoryIndex index.php RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^strony/([a-z0-9_]+)/([a-z0-9_]+)/([a-z0-9_]+)/?$ index.php?name=$1&sub=$2&part=$3 [L] RewriteRule ^strony/([a-z0-9_]+)/([a-z0-9_]+)/?$ index.php?name=$1&sub=$2 [L] RewriteRule ^strony/([a-z0-9_]+)/?$ index.php?name=$1 [L] RewriteRule ^news/([0-9]+)/?$ news.php?id=$1 [L] RewriteRule ^download/([0-9]+)/?$ download.php?id=$1 [L] #RewriteRule ^(.*)$ 404.php?id=$1 [L,QSA] Nie mam pomysłu jak zrobić przekierowanie na 404 jeśli adres będzie niepoprawny, np: www.przykladowastrona.pl/niedziala/12 bo nie ma słowa kluczowego 'niedziala' www.przykladowastrona.pl/news/12ef bo news może składać się tylko z cyfr chciałbym żeby przekierowanie było na stronę 404.php?strona= i tu adres wpisany przez użytkownika Ten post edytował little_MASTER 27.04.2010, 23:33:58 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 135 Pomógł: 158 Dołączył: 19.03.2009 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
Nie mam pomysłu jak zrobić przekierowanie na 404 jeśli adres będzie niepoprawny, np: www.przykladowastrona.pl/niedziala/12 bo nie ma słowa kluczowego 'niedziala' www.przykladowastrona.pl/news/12ef bo news może składać się tylko z cyfr chciałbym żeby przekierowanie było na stronę 404.php?strona= i tu adres wpisany przez użytkownika
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 8.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
O ErrorDocument 404 czytałem, tylko chciałbym w nim wyświetlić komunikat:
Strona o adresie: "tu błędny adres strony który wpisał użytkownik" nie istnieje. Dlatego chyba wygodniej byłoby napisać regułę która przekierowuje na 404.php jeśli wszystkie inne nie będą spełnione. Ew zostawię to ErrorDocument ![]() |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 1 135 Pomógł: 158 Dołączył: 19.03.2009 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 29 Pomógł: 0 Dołączył: 8.12.2008 Ostrzeżenie: (0%) ![]() ![]() |
niestety jeśli dam:
Kod ErrorDocument 404 /404.php to nie działa, muszę dać pełen adres: Kod ErrorDocument 404 http://www.przykladowastrona.pl/404.php Dzięki za pomoc, na razie wystarczy mi taki htaccess. Chyba że jakieś uwagi co do optymalizacji, to poproszę z chęcią ![]() P.S. A jak dopisać do moich reguł przekierowanie które zamieni adres: Kod http://www.przykladowastrona.pl/index.php?name=domowa na Kod http://www.przykladowastrona.pl/strony/domowa/ Tak żebym przeglądarka sama zmieniała adres na poprawny i Kod http://www.przykladowastrona.pl/strony/domowa na Kod http://www.przykladowastrona.pl/strony/domowa/ Żeby na końcu adresu sam dopisywał się ukośnik Wiem ze daje się flagę R lub R=301 ale jak to wszystko skleić w całość... Ten post edytował little_MASTER 28.04.2010, 20:39:17 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 1 135 Pomógł: 158 Dołączył: 19.03.2009 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
może to ci pomoże masz tam szczegółowy opis Link
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 05:39 |