![]() |
![]() ![]() |
![]() |
![]()
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 333 Pomógł: 137 Dołączył: 25.03.2008 Skąd: jesteś?? Ostrzeżenie: (0%) ![]() ![]() |
Z tego co rozumiem chcesz osiągnąć albo to albo to więc flaga [OR] pomoże... ;]
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 81 Pomógł: 2 Dołączył: 28.03.2003 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co rozumiem chcesz osiągnąć albo to albo to więc flaga [OR] pomoże... ;] [OR] jest do RewriteCond i to mi nic nie zmienia. Apache interpretuje regułki w następujący sposób: if(RewriteCond && RewriteCond ...){ RewriteRule} RewriteRule A ja chce: if(RewriteCond && RewriteCond ...){ RewriteRule RewriteRule} Z tego co wyczytałem chyba nie ma na to sposobu. Jest tylko [C] ale to do mojego przypadku nie pasuje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 20:28 |