stranica.html имеет точку?
Если они один раз отдали 404 - это не значит что они уже выпали.
И не забудь про ссылки на эти страницы. Невыпавшие ведь содержат на них ссылки, которые Яша обязан обойти?
Еще раз поясню.
1 - Прорабатываем "канонический" урл, т.е. тот, который будет впоследствии верным. Самый простой вариант - просто убрать запятые, возможно заменить на точки.
2 - При запросе из базы приводить командой REPLACE текущие урлы к "каноническим". Входящие урлы запроса страниц преобразовывать так же для правильного поиска. Можно конечно сразу заменить урлы в базе. Но я бы не стал торопиться. Не забываем, что в Яше уже сидят урлы с "?" вместо ","
3 - После того, как выяснили, какая страница запрашивается - проверяем реальный урл. Если он не "канонический" - редиректим 301 на "канонический". Потерь позиций и документов в этом случае не будет. Если Урл запрашиваемой страницы равен "каноническому" - все ок, выдаем страницу.
Просто нет смысла писать обработчик на каждый урл - преобразуйте все по маске. А 301 редирект переведет все урлы под одно правило и для Г и для Я без потерь страниц.
Вот скажем так выдержка Г-кода из одного ИМ. Там урлы страниц формируются транслитерализацией названия товара. Названия корректируются постоянно, но ничего не выпадает. Правда там соответствие по айди.
$rightUrl = url2product($unit['cat_id'],$site['category']).$id."-".str2url($unit['name']).".html";
if($_REQUEST['str'] != $rightUrl){
header("HTTP/1.1 301 Moved Permanently");
header("location: /".$rightUrl);
exit();
}
Ой ли?
то же самое описал и я. Только не в htaccess, а в коде. И не 6000 правил писать, а один временный костыль.
Смысл всех махинаций - плавная смена url, без потерь в поисковиках и потерянных всвязи с этим страниц. Решение за тобой.
В выборке страницы по урлу запроси вот этот урл
а потом через конструкцию
WHERE REPLACE( `url` , ',', '' ) = REPLACE( $url , '?', '' )
С символами играй как знаешь. Смысл - отдача урл вне зависимости от преобразований.
После чего урлы на страницах меняешь на нормальные (при выводе заменяешь символы) и сразу редиректишь на правильный адрес с старых страниц. Не меняешь в базе урлы для того, чтобы автоматом редиректить на правильные страницы. Хотя можно и заменить по базе сразу, но что-то мне подсказывает что не стоит этого делать.
Когда урлы с кривыми символами переместяться на правильные - заменишь в базе и все.
Не меняй.
WHERE REPLACE( `url` , ',', '' ) = "урл без запятых"
На страницах выводишь урлы без запятых
Перед выводом страниц проверяешь урлы на наличие запятых - есть запятая, редиректишь 301 на нее же, но без запятой.
Классически решается выводом в часть урл айдишника.
Постраничный редирект на 6000? Не лучший вариант.
В mysql есть функция replace---------- Добавлено 30.10.2014 в 02:02 ----------
Вещий сон увидел, там про символы в урл и преобразованиях хитрóвымученных символов.
Создаешь файл hjfdJGTG.html (Регистр крайне важен!!!) на рабочем столе.
Нажимаешь правой кнопкой - редактировать в блокноте.
Вылаживаешь в него свой хтмл.
Сохраняешь
Открываешь файл в браузере. В твоем персональном интернете появляется твой сайт.
Это бесплатно.
На картинке из старт-поста очень нравится третья строчка и четвертая буква справа в урле. С огромной долей вероятности она будет преобразована к "?"
Не воспроизводится что-то.
Проверьте - а ТОП полностью меняется или только отдельные сайты вылетают?