Неправильное разруливание адресов запросах.
Или каждая статья представлена отдельной точкой входа и PATH_INFO не отключен.
В общем-то проблема известная даже у нек. популярных движков, что впрочем не отменяет их кривизну. Какой движок?
Или поднимите выше последний фрагмент или поставьте $ (ну либо /?$) после Россия.---------- Добавлено 31.07.2017 в 19:22 ----------
RewriteRule ^(в-дар)/1$ /$1 [R=301,L]
Ну да, если в-дар будет обобщаться. Конкретно для в-дар можно и так написать:
RewriteRule ^в-дар/1$ /в-дар [R=301,L]
Все правильно, только в конце маски (первого параметра директивы) закрывающий $ поставьте. Или где-то перекрывает, или просто неправильный вариант в браузере закэширован.
RewriteRule ^(тест)/москва /$1 [R=301,L]
Опять-таки правило для частного случая разместите выше. Если вы хотите отключить редирект для частного случая, в соотв. правиле в качестве подстановки (второго параметра директивы) нужно поставить - (дефис) и добавить флаг L, либо добавить к общему правилу доп. условие, исключающее частный случай, например:
RewriteCond %{REQUEST_URI} !=/тест/москва/создаем-правильный-url-1120
...если я вас правильно понял.
Не увидел, чтобы вы где-то в коде генерировали 500-ую. Возможно, происходит зацикливающий редирект.---------- Добавлено 31.07.2017 в 12:40 ----------На скрине у вас 500-ая даже на фэйвайконе срабатывает. Т.е. ошибка может быть и не в коде, т.к. по идее запросы к статику передавать во фронт не нужно.
Если точнее, то в HTTP-запросах не передаются.
Вменяемые движки не плодят подобные дубли, оставляя только один вариант, а по другому – либо 301, либо 404, либо один из двух пред. вариантов на выбор.
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] RewriteRule (.*)/*$ http://%1/$1 [R=301,L] RewriteRule (.*)/+$ /$1 [R=301,L]
Это комби для избавления от www и трэйлинг слешей. Только добавьте еще к каждому правилу ваше условие «если не каталог», чтобы не было зацикливания на каталогах. Либо отключите автодобавление трэйлинг слеша на каталогах, если оно происходит:
<IfModule mod_dir.c> DirectorySlash Off </IfModule>
Тут явно замешан ваш рерайт. Редиректы обычно прописываются выше рерайтов, с флагом L. ---------- Добавлено 31.07.2017 в 12:15 ---------- Насчет «и всего прочего» не понял. Массовый слив – это плохо. Если же под прочим понимается /1/? на конце, то как-то так:
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC] RewriteRule (.*)/1/*$ http://%1/$1 [R=301,L] RewriteRule (.*)/1/*$ /$1 [R=301,L]
Можно и отдельно перенаправлять с /1 на конце, разместив это правило ниже комби, показанного ранее. ПС понимают несколько подряд идущих редиректов, если это делать без фанатизма. Например, в наших движках в .htaccess обычно выносится только комби, показанный ранее, а корректировка адресов с пагинацией происходит уже внутри движка, т.е. возможны два последовательных редиректа. А если взять глобальные корректировки вроде понижения символьного регистра в адресах или избавления от множественных (не трэйлинг) слешей, то и три.
Я вроде достаточно подробно расписал. Подкладываете новый сайт под старый домен, сохраняя прежние адреса страниц там, где это возможно. Где невозможно – 301 редирект со старых адресов на новые (совсем мусор можно оставить без ресолва: периодическое отваливание ненужных страниц – это норма), в пределах единственного объединенного сайта.
Я сказал «убийство СТАРОГО сайта». Это очевидно.
Адрес первой страницы списка обычно в движке настраивается. Если вы сделаете редирект отдельно, а на страницах сайта будет формироваться старый адрес, это оч. криво.---------- Добавлено 30.07.2017 в 23:51 ----------Если все же предпочитаете костыли, то как-то так:
RewriteRule ^(категория/[a-яА-ЯЁё-]+)/1$ /$1 [R=301,L]
feyona, можно было практически все изменить, оставив/расширив прежнюю адресацию. Если она была уж очень уродская, можно было делать частично или полностью редирект в рамках этого же сайта, перехватывая старые адреса при помощи штатных возможностей нового движка или нестандартных надстроек (хаков). Подумайте над возможностью объединить старый и новый сайты, прежде всего в плане адресации. Если вам совсем тяжко это сделать, тогда – постраничный редирект со старого сайта на новый, хотя конечно это убийство старого сайта, когда в почете развитие.
semur123, заведи себе бложик. Я вот попросил жену выделить ветку для моих опусов и теперь никого не достаю. Вот почитай, может, что подчерпнешь для себя: Как сделать пагинацию?