Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [modrewrite] Problem z wyrażeniem
Forum PHP.pl > Forum > Przedszkole
wlamywacz
Witam smile.gif

Mam problem z modrewrite takiego typu:
Chce aby każdy adres beta/{dowolny ciąg znaków bez -} kierowało na beta/blog.php5 - działa to
Chce aby wybranie pliku z końców jpg, png, gif lub css omijało te regułę i otwierało - działa to

Ale jak zrobić że gdy user wpiszę beta/zdjecia/{dowolny ciąg znaków bez -} otworzy mu ten plik i ominie regułę. A oto kod który stworzyłem i proszę o pomoc z dopisaniem do niego ostatniego przypadku.

  1. RewriteRule ^beta/([^-]+[^(\.css|\.jpg|\.png|\.gif)])$ beta/blog.php5 [L]
Wodzu
Cytat(wlamywacz @ 31.05.2008, 17:15:29 ) *
Witam smile.gif

Mam problem z modrewrite takiego typu:
Chce aby każdy adres beta/{dowolny ciąg znaków bez -} kierowało na beta/blog.php5 - działa to
Chce aby wybranie pliku z końców jpg, png, gif lub css omijało te regułę i otwierało - działa to

Ale jak zrobić że gdy user wpiszę beta/zdjecia/{dowolny ciąg znaków bez -} otworzy mu ten plik i ominie regułę. A oto kod który stworzyłem i proszę o pomoc z dopisaniem do niego ostatniego przypadku.

  1. RewriteRule ^beta/([^-]+[^(\.css|\.jpg|\.png|\.gif)])$ beta/blog.php5 [L]

Wybacz, ale Twoja reguła jest dziurawa jak ser szwajcarski, bo jest po prostu niepoprawna składniowo, a działa w miarę OK trochę przez przypadek. Fragment typu [abc] lub [^abc] służy do określania które znaki odpowiednio są/nie są dozwolone (w sensie pasowania do reguły). Adres ze ścieżką typu beta/boooo.piss (lub mnóstwo podobnych, w których rozszerzeniach występują znaki ze zbioru cfgijpns) nie zostanie zamieniony i zapewne skończy się to błędem 404 (not found). Pewnie to niewielki problem, ale w poważniejszych zastosowaniach taka luka może oznaczać kłopoty.
Ponieważ poprawienie tej reguły nie jest praktycznie możliwe w jednym kawałku, proponuję utworzyć najpierw reguły dla każdego z wyjątków (może być w jednej), które przekierowują na ten adres, który został wpisany (czyli de facto nie przekierowują, zostawiają wszystko jak jest), a na samym końcu regułę, która cokolwiek (.*) skieruje na blog5.php. Myślę, że może pomóc także wykorzystanie dyrektywy RewriteCond (warunek dla RewriteRule).

Pozdr.
Wodzu
wlamywacz
Mam włączony wildcard błędy 404 mnie nie obchodzą czy mógłbyś mi pomóc jak to zrobić ? Gdyż sam to napisałem i widać nie poszło mi to sad.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.