Głowię się nad tym już drugi dzień, może ktoś zauważy coś czego ja nie widzę.
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www
RewriteCond %{HTTP_HOST} ^(.+)$
RewriteRule ^(.*)$ http://www.%1/$1 [R=permanent,L,QSA]
#^to dodaje www. jezeli go nie ma - dziala poprawnie
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www.(.+).domena.pl$
RewriteRule ^([\/0-9A-Za-z_-]*)/$ index.php?find=%1&category=$1 [L,QSA]
RewriteRule ^([\/0-9A-Za-z_-]*)\.html$ index.php?find=%1&page=$1 [L,QSA]
#^to juz nie do konca
Według tego jak rozumiem najpierw sprawdza czy nie istnieje taki plik ani katalog i czy HTTP_HOST pasuje do wzorca. Jezeli wszystko jest true to sprawdza RewriteRule. Do tego momentu dziala dobrze. Jezeli podam adres www.domena.pl/a/b/ nie zadziala,a jezeli podam www.page1.doemna.pl/a/b/ zadziala poprawnie.
Ale jeżeli dodam do tego np. linijkę:
RewriteRule ^(.*)$ index.php?find=%1&bla=a$1 [L,QSA]
dzieje się coś dziwnego. Nawet adresy typu domena.pl/obrazek.jpg przestają się ładować poprawnie - zamiast nich ładuje się domena.pl/index.php i co lepsze wszystko to ładuje się bez zmiennej "bla", która została ustawiona w RweriteRule. Pomijam już to, że adres www.domena.pl powinien być pomijany bo nie pasuje do wzorca. Dlaczego ta linijka całkowicie wywraca wszystko do góry nogami?
Co chcę osiągnąć:
www.page1.domena.pl -> index.php?find=page1 // nie dziala
www.page1.domena.pl/a/b/ -> index.php?find=page1&q=a/b
www.page1.domena.pl/abc.html -> index.php?find=page1&page=abc
www.domena.pl -> index.php
www.domena.pl/abc.html -> index.php?page=abc
Z góry dziękuję za pomoc.
Doszedłem do czegoś nowego czyli dlaczego to nie działa tak jak powinno:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www.(.+).domena.pl$
RewriteRule ^([\/0-9A-Za-z_-]*)/$ index.php?find=%1&category=$1 [L,QSA]
RewriteRule ^([\/0-9A-Za-z_-]*)\.html$ index.php?find=%1&page=$1 [L,QSA] <- to dziala zarowno dla www.domena.pl/kontakt.html i www.page1.domena.pl/kontakt.html
Ale jak rozbiję to tak:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www.(.+).domena.pl$
RewriteRule ^([\/0-9A-Za-z_-]*)/$ index.php?find=%1&category=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{HTTP_HOST} ^www.(.+).domena.pl$
RewriteRule ^([\/0-9A-Za-z_-]*)\.html$ index.php?find=%1&page=$1 [L,QSA]
Działa prawidłowo... nie ma sposobu aby nie powtarzać RewriteCond za każdym razem?