За последние 24 часа нас посетили 20211 программистов и 2036 роботов. Сейчас ищут 1457 программистов ...

Проблема с кириллицей RewriteRule

Тема в разделе "Настройка веб-сервера", создана пользователем Alex6001, 10 сен 2014.

  1. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    Практически не разбираюсь в MOD_REWRITE помогите решить проблему:
    На русском языке не открываются ссылки товаров, с категориями проблем нет http: // vypileno.de /%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0:::24.html. Ссылка на товар имеет вид

    ахаха! прекрати!
    и браузер ее сбрасывает.
    вот кусок MOD_REWRITE кода .htaccess

    Код (Text):
    1.  
    2. ##-- Categories (:::)
    3.   RewriteCond %{REQUEST_URI} (.*):::([_0-9]+):([_0-9]+)\.html$
    4.   RewriteRule (.*):::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$2&page=$3 [QSA,L]
    5.   RewriteCond %{REQUEST_URI} (.*):::([_0-9]+)\.html$
    6.   RewriteRule (.*):::([_0-9]+)\.html$ index.php?cPath=$2 [QSA,L]
    7.  
    8.   ##-- Products (::)
    9.   RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L]
    10.  
    11.   ##-- Content (:_:)
    12.   RewriteRule (.*):_:([0-9]+)\.html$ shop_content.php?coID=$2 [QSA,L]
    Кодировка названий категорий и продуктов в базе не отличается, latin1_german2_ci
    Просьба знатокам подсказать решение проблемы, спасибо.

    считаю человек зареганный непосредственно перед своим первым сообщением не должен оставлять реальные ссылки — выпиливаю.
    Модератор
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    а с латинскими URL-ами всё работает? точно?
    а если заменить буквально латиницу на кириллицу, то уже не работает? точно?

    это ппц! может ты, конечно, вырос в Германии и не в курсе, но для кириллицы эта кодировка не подходит. но судя по правилам реврайтинга, твоим скриптам должно быть пофигу на текст, они берут из строки только целочисленные id. так что проблема где-то в другом месте.
     
  3. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    Это несерьезно, ссылка дана для того, чтобы спец мог сам посмотреть что происходит. В России у меня нет потенциальных клиентов как и смысла пиарить тут свой сайт.

    Добавлено спустя 2 минуты 36 секунд:
    Тем не менее категории открываются а товары нет
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    По существу: ты испытал адреса без кириллицы? Ты понял про кодировку latin1?
     
  5. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    думаете придется похерить сайт и сделать заново с новой кодировкой?
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    я думаю надо сначала поставить точный диагноз. вы почему уворачиваетесь от вопросов?
     
  7. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    на немецком все работает отлично. В русском категории отображаются нормально, но товар нет, ссылка содержит кракозябры вместо категории. Latin 1 раньше устраивал вполне, до того как перешел на SEO url
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    Какой вы право неудобный собеседник! Изначально речь шла не про отображение, а про открытие ссылок.
    Сейчас с открытием страниц по кириллическим URL нет проблем? Вас только вид ссылки беспокоит?

    Переключитесь на utf-8 и будет вам счастье с отображением.
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    А если кликнуть то в адресной строке какие буквы?
     
  10. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    категории посмотреть можно, товар посмотреть нельзя. Если кликнуть на ссылку товара, браузер не открывает ссылку на товар со словами "Неверное перенаправление на странице
    Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится."
     
  11. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    О! Что же вы раньше не сказали?! Проблема не в htaccess и mod_rewrite, а в php-скрипте. Он циклит!

    Диагноз:
    Для указания на конкретный товар достаточно знать ID, все остальное в адресе это финтифлюшки для красоты. То есть строго говоря
    • Музыка::12.html
    • KhskjHjkh skjsakjsdkjsdk::12.html
    • Что/Угодно/Еще::12.html
    указывают на один и тот же товар. А дальше начинается интересное!!! Чтобы такие странички не множились в индексе поисковика, скрипт вычисляет КАНОНИЧЕСКИЙ адрес. То есть правильную ссылку на эту же страницу. И если этот адрес не совпал с полученным REQUEST_URI, то скрипт делает редирект на "правильный" адрес.

    Проблема в том, что ваш скрипт некорректно работает с кириллицей и какие-то, вероятно не все, входящие адреса считает не равными тому URI, который сам генерирует — в итоге происходит бесконечный цикл редиректа.


    Может быть в категориях этой проверки нет, а может быть случайно так совпало, что ваша тестовая категория проканала. Если посмотреть на вашу картинку, видно, что в имени категории там хyета какая-то испорченнная вместо русского текста, наверное поэтому она и не сбоит ))) Короче, вы поторопились с выводами из наблюдаемой картины.

    Лечение:
    За рамками того, что вы показали. Что-то в строковых операциях неверно из-за неготовности скрипта к уникоду.
    В любом случае, вам надо подготовиться — перекодировать базу, вставить SET NAMES и Content-type charset.

    Удачи!
     
  12. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    Спасибо за анализ, лечение для меня выглядит сложновато. А нельзя ли используя RewriteCond выключить преобразование url для русского языка (url с кириллицей), меня это вполне устроит.
    Типа если url содержит кириллицу, RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L] отменяется
     
  13. Alex6001

    Alex6001 Новичок

    С нами с:
    10 сен 2014
    Сообщения:
    7
    Симпатии:
    0
    написал строчку RewriteCond %{REQUEST_URI} !.*°.*
    Код (Text):
    1.  
    2. ##-- Products (::)
    3. RewriteCond %{REQUEST_URI} !.*°.*
    4. RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L]  
    Теперь пишет страница не найдена, вместо глухой ""Неверное перенаправление...."
     
  14. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.120
    Симпатии:
    1.245
    Адрес:
    там-сям
    безнадежен