![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 372 Pomógł: 2 Dołączył: 10.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
witam, używam .htaccess do tworzenia prostych adresów, taka reguła:
Kod RewriteRule ^Inne/([0-9]+)/([0-9]+)/([-\s{}0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\?]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3 działa dobrze do czasu, gdy nazwa artykułu zawiera polskie znaki. Cytat np. Jak zbadać glebe? Jest tu znak ć, wyrażenie nie zadziała a serwer zwróci błąd 404, w którym będzie pisało: Cytat The requested URL /Inne/2/1/Jak-zbadać-glebe? widać tu że polskie znaczki zostają zamienione na jakieś krzaczki, ć -> zostało zamienione na ć i w przypadku gdy dodam do reguły znak ć to wszystko będzie działać poprawnie: Kod RewriteRule ^Inne/([0-9]+)/([0-9]+)/([-\s{}0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ\?ć]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3 Pytanie: skąd się wzięły takie krzaczki zamiast pl znaków, jak zrobić by nie trzeba było dodawać w regule tych krzaczków a'la: ć tylko by poprawnie reagowała ona na polskie znaki? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Zacznijmy od tego że link nie powinien zawierać PL znaków, w ogóle nie powinien zawierać niczego więcej prócz [0-9a-z] i jakiś od dzielników. Przy zapisie linku do bazy, jego generowaniu zamieniasz np.
Kod ą => a, ć => c itd. Problemem może być też kodowanie jakie ustawiłeś. Sprawdź czy wszędzie masz utf-8A jeśli się upierasz przy PL znakach, to zamień je tak samo: Cytat ą %B1 ć %E6 ę %EA ł %B3 ń %F1 ó %F3 ś %B6 ż %BF ź %BC Ą %A1 Ć %C6 Ę %CA Ł %A3 Ń %D1 Ó %D3 Ś %A6 Ż %AF Ź %AC Choć to masochizm, bo co jeśli wpiszę Inne/2/1/Jak-zbadac-glebe ? Już mi się strona nie wyświetli, albo będzie inna? A wpiszę ją tak, bo nawet szary kowalski wie iż w adresach WWW nie ma ogonków ![]() urldecode utf8-decode Ten post edytował !*! 6.12.2011, 10:16:39 -------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Nie no z polskich znaków korzystać można a adresach url. Zamiast wrzucać do wyrażenia niejako "zabezpieczenie" przed wpisywaniem niepowołanych znaków, czyli umieszczaniem w zakresie znaków wszystkiego co może przelecieć, wrzuć tam jakieś wyrażenie które przeleci przez wszystko. Powiedzmy:
Kod RewriteRule ^Inne/([0-9]+)/([0-9]+)/(.+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3 Lub jak już usilnie próbujesz zrobić dodatkowe zabezpieczenie, to zamiast dozwolone znaki, spróbuj wypisać niedozwolone, coś na ten przykład: Kod RewriteRule ^Inne/([0-9]+)/([0-9]+)/([^\,\.\/<>\?]+)$ index.php?kategoria=Inne&id=$1&page=$2&nazwa=$3 aczkolwiek, nie wypisałem tutaj wszystkich niedozwolonych znaków. Dodatkowo poczytaj ten temat: http://forum.php.pl/index.php?showtopic=171554 być może masz podobny problem, którego rozwiązania póki co nie ma. Ten post edytował by_ikar 6.12.2011, 12:07:55 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 4 298 Pomógł: 447 Dołączył: 16.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tak, korzystanie ze znaków diakrytycznych w adresach url jest dozwolone. Jednak to sztuczny twór, powstały tylko po to, aby powiększyć pulę dostępnych adresów, tak samo głupi jak sub domena "m" dla urządzeń mobilnych.
-------------------- Nie udzielam pomocy poprzez PW i nie mam GG.
Niektóre języki programowania, na przykład C# są znane z niezwykłej przenośności (kompatybilność ze wszystkimi wersjami Visty jest wiele warta). |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 798 Pomógł: 307 Dołączył: 13.05.2009 Skąd: Gubin/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Tak, korzystanie ze znaków diakrytycznych w adresach url jest dozwolone. Jednak to sztuczny twór, powstały tylko po to, aby powiększyć pulę dostępnych adresów, tak samo głupi jak sub domena "m" dla urządzeń mobilnych. Jeżeli chodzi o domeny i znaki diakrytyczne to tak, mam takie samo zdanie jak ty. Ale jeżeli chodzi o adres url, to już jest inna kwestia tak na prawdę. Można tam trzymać te polskie znaki, ale wcale nie trzeba, dlatego że dzisiaj wyszukiwarki typu google, bardzo świetnie sobie radzą morfologią danych słów, więc stosowanie tych polskich znaków jest IMO sztuką, dla sztuki. No ale jak ktoś chce, to może używać ;) |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 21.06.2025 - 01:50 |