Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение. Не работает а-яА-Я

Ответить
Настройки темы
Регулярное выражение. Не работает а-яА-Я

Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


похоже, у меня на хостинге не работает такое правило, как а-яА-Яa-zA-Z
Нужно сделать запись в .htaccess

Подскажите, как обратиться в хостинг с вопросом.
Какой модуль или библиотека должна стоять у них на сервере для правильного отображения кириллических букв в регулярных выражениях?

Хостинг - Линукс

вообщем вот такое выражение не фурычит:

RewriteRule ^([а-яА-Яa-zA-Z0-9\_\-]+)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.htm$ index.php?production=$1&id=$2 [L]

хотя может проблема быть в какой то кодировке
Мне вот отвечает такими символами странными
The requested URL /инстÑ?укция/АбÑ?а-КадабÑ?а/10/Тест.pdf was not found on this server.

-------
Мой блог Web Development


Отправлено: 23:54, 19-10-2010

 

Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


Цитата Artem-Samsung:
/инÑ�Ñ‚Ñ?укциÑ�/Ð�бÑ?а-КадабÑ?а/10/ТеÑ�Ñ‚.pdf »
это htmlentities (съедено страницей), урлы нужно в (raw)urlencode кодировать. Кодировка файла хтаксес должна соответствовать кодировке урла (utf8) или локали (в которой работает сервер). Иначе используйте другое написание символов кириллицы (16-ричное)...

Отправлено: 02:22, 20-10-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Код: Выделить весь код
RewriteRule ^(инструкция)\/(DJ\_микшер)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(CD\_проигрыватель)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(Вертушка)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(Студийные_мониторы)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(Наушники)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(Микрофон)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
RewriteRule ^(инструкция)\/(Midi\-клавиатура)\/([0-9]+)\/[\+а-яА-Яa-zA-Z0-9\_\-\(\)\:\.\-]+\.pdf$ pdftest.php?pdf=$3 [L]
забавно, что так - работает, но так не в кайф

-------
Мой блог Web Development


Отправлено: 02:25, 20-10-2010 | #3


Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
RewriteRule ^([^\/]+)\/([0-9]+)\/[^\/]+\.htm$ index.php?production=$1&id=$2 [L]
Это сообщение посчитали полезным следующие участники:

Отправлено: 02:36, 20-10-2010 | #4


Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Sham, ага : )))

-------
Мой блог Web Development


Отправлено: 02:37, 20-10-2010 | #5


Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Почему то не подхватывает кириллицу на хостинге, который даже кириллические домены поддерживает. Наверное я что то делаю не так

Нужно вот так:
RewriteRule ^([a-zA-Zа-яА-Я0-9-]*)/([0-9]+)\-([a-zA-Zа-яА-Я0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
но вот выше, там в первой части не работает а-яА-Я, т.е. кириллическая ссылка не читается
Вторая часть - нормально подхватывает

Делаю так, и работает:
RewriteRule ^(.*)/([0-9]+)\-([a-zA-Zа-яА-Я0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
но хотелось бы, как в первом варианте.

-------
Мой блог Web Development


Отправлено: 02:12, 07-11-2010 | #6


Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


кодировка htaccess должна соответствовать кодировке кириллицы из заголовка запроса (имхо только в юникоде utf8). Отследите запрос в разных браузерах, как там кириллица передается. Если urlencoded, то имхо в регекспе надо учитывать и такой вариант. Тем более, в браузерах есть настройка "кодировать урл".
Файл htaccess дб в кодировке utf8 (кодировка URL) или в регекспах учесть urlencoded символы ("символ" - %F1%E8%EC%E2%EE%EB), т.е. добавить знак процента "%" в скобки.
Если сайт не в кодировке UTF, то браузеры имхо по любому кодируют неюникод-символы в урлах.

Отправлено: 16:40, 07-11-2010 | #7


Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


Цитата Sham:
Отследите запрос в разных браузерах, как там кириллица передается. »
Можно поподробней?
Цитата Sham:
знак процента "%" в скобки »
Здесь тоже поподробней с примером пожалуйста
Так типа?
Код: Выделить весь код
RewriteRule ^([a-zA-Zа-яА-Я0-9%-]*)/([0-9]+)\-([a-zA-Zа-яА-Я0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
таки да, если копипастить, то получается такая ссылка:
%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E-%D0%B3%D0%B8%D1%82%D0%B0%D1%80%D1%83/23-classic-guitar-classic-guitar-tenson-classic-guitar-tenson-f500-090-buy-classic-guitar-tenson-f500-090-kiev.html

-------
Мой блог Web Development


Отправлено: 17:03, 07-11-2010 | #8


Deadooshka


Сообщения: 2517
Благодарности: 692

Профиль | Отправить PM | Цитировать


пример (любой плагин к ff)
Код: Выделить весь код
GET /post-1536966.html HTTP/1.1
Host: forum.oszone.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cache-Control: max-age=0
смотрим путь из первой строки.

^([a-zA-Zа-яА-Я0-9\%\-]*)

с кириллицей вообще сложный вопрос, имхо только UTF-8. (еще зависит от серверной ОС, и как она поддерживает кириллицу, если имена файлов в ней).

Отправлено: 17:46, 07-11-2010 | #9


Аватара для Artem-Samsung

Ветеран


Сообщения: 823
Благодарности: 53

Профиль | Сайт | Отправить PM | Цитировать


По дэфолту было:
Код: Выделить весь код
RewriteRule ^([a-zA-Z0-9-]*)/([0-9]+)\-([a-zA-Z0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
Ссылки переписал кириллические, с браузера копируются так:
Код: Выделить весь код
/%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E-%D0%B3%D0%B8%D1%82%D0%B0%D1%80%D1%83/23-classic-guitar-classic-guitar-tenson-classic-guitar-tenson-f500-090-buy-classic-guitar-tenson-f500-090-kiev.html
Следовательно правило написал так:
Код: Выделить весь код
RewriteRule ^([a-zA-Zа-яА-Я0-9\%\-]+)/([0-9]+)\-([a-zA-Zа-яА-Я0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]
Но не работает

На счет хедеров, то вот:

Код: Выделить весь код
http://dommuzyki.com.ua/%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E-%D0%B3%D0%B8%D1%82%D0%B0%D1%80%D1%83/23-classic-guitar-classic-guitar-tenson-classic-guitar-tenson-f500-090-buy-classic-guitar-tenson-f500-090-kiev.html



GET /%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%BA%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D1%83%D1%8E-%D0%B3%D0%B8%D1%82%D0%B0%D1%80%D1%83/23-classic-guitar-classic-guitar-tenson-classic-guitar-tenson-f500-090-buy-classic-guitar-tenson-f500-090-kiev.html HTTP/1.1

Host: dommuzyki.com.ua

User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Ubuntu/10.10 (maverick) Firefox/3.6.12

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-us,en;q=0.5

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 115

Connection: keep-alive

Referer: http://dommuzyki.com.ua/8-%D0%B2%D1%8B%D0%B1%D1%80%D0%B0%D1%82%D1%8C-%D0%B3%D0%B8%D1%82%D0%B0%D1%80%D1%83

Cookie: низя :)

Cache-Control: max-age=0



HTTP/1.1 404 Not Found

Date: Thu, 11 Nov 2010 21:33:05 GMT

Server: Apache

X-Powered-By: PHP/5.2.13

P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Keep-Alive: timeout=5, max=20

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8
Работает так:
RewriteRule ^(.*)/([0-9]+)\-([a-zA-Zа-яА-Я0-9-]*)\.html(.*)$ /product.php?id_product=$2$4 [L,E]

Но неинтересно

-------
Мой блог Web Development


Последний раз редактировалось Sham, 12-11-2010 в 00:52. Причина: кукисы то....


Отправлено: 00:39, 12-11-2010 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » Регулярное выражение. Не работает а-яА-Я

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Регулярное выражение venuko Вебмастеру 11 02-08-2010 18:18
Регулярное выражение: вырезать данные между тегами venuko Вебмастеру 6 04-06-2009 16:59
Регулярное выражение для проверки денежной суммы BuilderMan Вебмастеру 9 23-08-2006 11:24
регулярное выражение на пхп. Drem Вебмастеру 13 22-07-2006 00:16
Регулярное выражение benya Вебмастеру 27 26-08-2005 14:34




 
Переход