Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [htaccess]Polskie znaki - przepchnięcie przez htaccess bez pliku routującego
Forum PHP.pl > Forum > Serwery WWW > Apache
thek
Rzadko piszę, a to mnie niestety ugryzło i zastanawiam jak to obejść. Mam regułkę w htaccess, która w wyniku ma dać przekierowanie na link nie dość że z polskimi znakami, to jeszcze spacją:
[APACHE] pobierz, plaintext
  1. RewriteRule ^hotele_w_szklarskiej_porebie.php/?$ /obiekty/miasto_Szklarska Poręba [R=301,L]
[APACHE] pobierz, plaintext

Oczywiście reguła wysypuje htaccess jak złoto i widzę 500. To jak ugryźć spację wiem, wystarczyło ująć wynikowy w nawiasy
[APACHE] pobierz, plaintext
  1. RewriteRule ^hotele_w_szklarskiej_porebie.php/?$ "/obiekty/miasto_Szklarska Poręba" [R=301,L]
[APACHE] pobierz, plaintext

Spację łyknęło. Problem jest teraz z kodowaniem niestety spacja jak i "ę" są w locie urlenkodowane. Nie pomaga dodawanie flagi NE -> olewa ją. W efekcie przeglądarka wypluwa:
  1. obiekty/miasto_Szklarska%20Por%eaba

a nie tego chcę. Ma być ładnie
  1. obiekty/miasto_Szklarska Poręba

Chciałbym uniknąć pisania routera by przychwytywał taki adres lub podobne, przetwarzał i dopiero pluł dalej bo nie widzę sensu, tylko z powodu kodowania, puszczać go przez kolejnego pośrednika.
erix
To że przeglądarka to wypluwa, to już nie wina serwera, z tego co się orientuję.

I najważniejsze - jakiego kodowania używasz do polskich krzaków w htaccess? Bo w URL widzę coś w stylu ISO-8859-2, o ile się nie mylę.
bim2
A to nie jest przypadkiem wina przeglądarki? Ja jak kopiuje nawet link z polskimi znakami (które sa normalnie wyświetlone) to przetwarza mi je na encodowane :/ Nie prościej bez polskich znaków tego urlka wpisać? smile.gif
thek
A więc mówię... Wszystkie pliki są w ANSI as UTF-8 (innymi słowy utf-8 bez BOM) oprócz htaccess. Niestety z tego co widziałem, to próba konwersji tego pliku na zgodny z innymi powoduje cyrki. Tak jakby htaccess nie miał prawa mieć kodowania pliku innego niż ANSI. Samo wpisanie więc do przeglądarki w pasku adresu polskiej nazwy nie jest problemem, bo wtedy przeleci wszystko ładnie i polskie znaki nie stanowią problemu, gdyż cała strona stoina utf-8. Zonk jest tylko gdy muszę na sztywno w htaccess określić, jako docelowy, adres z polskimi znakami. Niestety zapis htaccess jako ANSI uniemożliwia prawidłowe odczytanie polskich znaków i są one konwertowane na urlencode niezależnie od obecności lub nie flagi NE. Zrobiłem w htaccess na razie tak, że oznaczam sobie pewne na sztywno wpisane przekierowania i metodą miasto, kontrolera obiekty, przechwytuję ję (prosty switch) i redirectuję na, już polski w pełni adres, gdyż plik routera jest już utf-8 bez BOM i nie robi cyrków. Niezbyt to eleganckie, ale działa. Szukałem jednak sposobu na ładniejsze załatwienie tego, bez uciekania się do kierowania dodatkowo przez router, w obrębie samego htaccess, i tutaj niestety jak na razie brak efektów.
erix
Z tego co moja wiedza mi mówi, to z innymi znakami niż ASCII w htaccess są cyrki i trzeba je routować zewnętrznym skryptem...
thek
Czyli innymi słowy jedyne możliwe rozwiązanie już zrobilem. Szkoda. Może kiedyś pomyślą nad tym, że skoro dopuszcza się już domeny z diakrytykami to i htaccess powinien mieć możliwość ich obsługi, bez cudowania z routerem lub ewentualne kombinowanie z IDN. Przyjdzie mi chyba poczekać z pełną obsługą do czasu aż w końcu to zauważą wink.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.