Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [.htaccess] Niedeterministyczne zachowanie
Kabraxis
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 2
Dołączył: 28.03.2003

Ostrzeżenie: (0%)
-----


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?
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.09.2025 - 19:31