Właśnie przeniosłem jedną z naszych podstawowych aplikacji z Windows + IIS + Coldfusion do Ubuntu + Apache + Lucee. Pierwszym dużym problemem jest kodowanie URI dla egzotycznych alfabetów.Kodowanie URI Lucee (cyrylica)
Na przykład, starając się dotrzeć do tego URL http://www.example.com/ru/Солнцезащитные-очки/saint-laurent/
wyniki w tym zapis w access.log Apache:
http://www.example.com/ru/%D0%A1%D0%BE%D0%BB%D0%BD%D1%86%D0%B5%D0%B7%D0%B0%D1%89%D0%B8%D1%82%D0%BD%D1%8B%D0%B5-%D0%BE%D1%87%D0%BA%D0%B8/saint-laurent/
Cóż, myślę, że jest poprawnie zakodowany url. Następnie używam reguły przepisywania w pliku .htaccess, aby pobrać tę część adresu url (cyrylica) w parametrze ciągu zapytań url (powiedzmy "foo").
Korzystanie cflog aby go zrzucić, widzę w dzienniku aplikacji:
/index.cfm?foo=оÑки-длÑ-зÑениÑ&
... co jest oczywiście błędne, ponieważ to, co potrzebne jest oryginalny łańcuch, w UTF-8 cyrylicą.
próbowałem umieścić parametr URIEncoding w moim server.xml tomcat http złącze, bez żadnych wyników:
<Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
Jak mogę dostać mój parametr URL w UTF-8?
Pierwszą rzeczą, którą spróbowałbym wyizolować kocur i przetestować to bezpośrednio. np. spróbuj http: // nazwa hosta: 8888/index.cfm? foo = Солнцезащитные-очки. Jeśli to działa poprawnie - Twój problem jest po stronie Apache/mod_rewrite. To może pomóc w skoncentrowaniu się na tym pytaniu. Jeśli nadal występuje problem, możesz również przejrzeć dzienniki dostępu do tomcat w celu dalszej izolacji (być może jest to raczej problem lucee, a nie tomcat). –
Próbowałem i działa, gdy bezpośrednio wywołuję lucee przekazując cyrylica jak pisałeś. Więc ... czy to problem z mod_rewrite w Apache? Dlaczego zmienia moje kodowanie?!? –
Nie mogę ci powiedzieć (nie moja dziedzina wiedzy). Ale możesz zmienić to pytanie jako Apache/Mod przepisać i podać kilka szczegółów, aby niektórzy eksperci w tym obszarze mogli pomóc (chociaż wygląda na to, że nie powinieneś używać tych URL-i). –