Практически не разбираюсь в MOD_REWRITE помогите решить проблему: На русском языке не открываются ссылки товаров, с категориями проблем нет http: // vypileno.de /%D0%9C%D1%83%D0%B7%D1%8B%D0%BA%D0%B0:::24.html. Ссылка на товар имеет вид ахаха! прекрати! и браузер ее сбрасывает. вот кусок MOD_REWRITE кода .htaccess Код (Text): ##-- Categories (:::) RewriteCond %{REQUEST_URI} (.*):::([_0-9]+):([_0-9]+)\.html$ RewriteRule (.*):::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$2&page=$3 [QSA,L] RewriteCond %{REQUEST_URI} (.*):::([_0-9]+)\.html$ RewriteRule (.*):::([_0-9]+)\.html$ index.php?cPath=$2 [QSA,L] ##-- Products (::) RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L] ##-- Content (:_:) RewriteRule (.*):_:([0-9]+)\.html$ shop_content.php?coID=$2 [QSA,L] Кодировка названий категорий и продуктов в базе не отличается, latin1_german2_ci Просьба знатокам подсказать решение проблемы, спасибо. считаю человек зареганный непосредственно перед своим первым сообщением не должен оставлять реальные ссылки — выпиливаю. Модератор
а с латинскими URL-ами всё работает? точно? а если заменить буквально латиницу на кириллицу, то уже не работает? точно? это ппц! может ты, конечно, вырос в Германии и не в курсе, но для кириллицы эта кодировка не подходит. но судя по правилам реврайтинга, твоим скриптам должно быть пофигу на текст, они берут из строки только целочисленные id. так что проблема где-то в другом месте.
Это несерьезно, ссылка дана для того, чтобы спец мог сам посмотреть что происходит. В России у меня нет потенциальных клиентов как и смысла пиарить тут свой сайт. Добавлено спустя 2 минуты 36 секунд: Тем не менее категории открываются а товары нет
на немецком все работает отлично. В русском категории отображаются нормально, но товар нет, ссылка содержит кракозябры вместо категории. Latin 1 раньше устраивал вполне, до того как перешел на SEO url
Какой вы право неудобный собеседник! Изначально речь шла не про отображение, а про открытие ссылок. Сейчас с открытием страниц по кириллическим URL нет проблем? Вас только вид ссылки беспокоит? Переключитесь на utf-8 и будет вам счастье с отображением.
категории посмотреть можно, товар посмотреть нельзя. Если кликнуть на ссылку товара, браузер не открывает ссылку на товар со словами "Неверное перенаправление на странице Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится."
О! Что же вы раньше не сказали?! Проблема не в htaccess и mod_rewrite, а в php-скрипте. Он циклит! Диагноз: Для указания на конкретный товар достаточно знать ID, все остальное в адресе это финтифлюшки для красоты. То есть строго говоря Музыка::12.html KhskjHjkh skjsakjsdkjsdk::12.html Что/Угодно/Еще::12.html указывают на один и тот же товар. А дальше начинается интересное!!! Чтобы такие странички не множились в индексе поисковика, скрипт вычисляет КАНОНИЧЕСКИЙ адрес. То есть правильную ссылку на эту же страницу. И если этот адрес не совпал с полученным REQUEST_URI, то скрипт делает редирект на "правильный" адрес. Проблема в том, что ваш скрипт некорректно работает с кириллицей и какие-то, вероятно не все, входящие адреса считает не равными тому URI, который сам генерирует — в итоге происходит бесконечный цикл редиректа. Может быть в категориях этой проверки нет, а может быть случайно так совпало, что ваша тестовая категория проканала. Если посмотреть на вашу картинку, видно, что в имени категории там хyета какая-то испорченнная вместо русского текста, наверное поэтому она и не сбоит ))) Короче, вы поторопились с выводами из наблюдаемой картины. Лечение: За рамками того, что вы показали. Что-то в строковых операциях неверно из-за неготовности скрипта к уникоду. В любом случае, вам надо подготовиться — перекодировать базу, вставить SET NAMES и Content-type charset. Удачи!
Спасибо за анализ, лечение для меня выглядит сложновато. А нельзя ли используя RewriteCond выключить преобразование url для русского языка (url с кириллицей), меня это вполне устроит. Типа если url содержит кириллицу, RewriteRule (.*):.+)\.html$ product_info.php?products_id=$2 [QSA,L] отменяется
написал строчку RewriteCond %{REQUEST_URI} !.*°.* Код (Text): ##-- Products (::) RewriteCond %{REQUEST_URI} !.*°.* RewriteRule (.*)::(.+)\.html$ product_info.php?products_id=$2 [QSA,L] Теперь пишет страница не найдена, вместо глухой ""Неверное перенаправление...."