URL перенаправления htaccess с завершающим% 20 - PullRequest
2 голосов
/ 17 января 2020

Мы используем красивые URL на нашем сайте. У меня был сторонний техник, добавляющий обратные ссылки несколько лет go. Он проделал отличную работу, но в одном случае он последовательно добавил ссылку с символом завершающего пробела.

https://www.example.com/item/item/%20

Это было проиндексировано как %20, и я могу видеть в своих отчетах обратной ссылки, что там 87 сайтов, которые указывают на URL с %20 в конце.

Если я смогу перенаправить это, то моя страница /item/item/ получит 87 обратных ссылок.

Мы используем правила перезаписи, и я попробовал здесь все решения по переполнению стека, но ни одно из них не сработало. Вот некоторые неработающие решения:

RewriteEngine on
RewriteRule ^(.*[^\ ])\ +$ /$1

RedirectRule (.*)\s$ $1 [R=301]

RewriteRule ^(.*/|)[\s%20]+(.+)$ $1$2 

Я попытался перенаправить 301, но они тоже не работают.

redirect 301 /item/item/%20 /item/item/

redirect 301 /item/item/+ /item/item/

Некоторые вещи, которые помогают - это не шаблон для всего сайта , Это всего лишь один конкретный URL, который был распространен в мире неправильно. И это не пробел нигде в строке - это всегда в конце.

Спасибо.

Для меня также было бы неплохо преобразовать конечный %20 в известный символ, такой как - потому что я мог бы перенаправить его /item/item/- в item/item/

1 Ответ

1 голос
/ 17 января 2020

Вы можете использовать это правило как ваше самое верхнее правило чуть ниже RewriteEngine On строки:

RewriteEngine On

RewriteRule ^(.*)(?:\s|\x20)+$ /$1 [L,NE,R=301]
...