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
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)
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]
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]
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