У меня есть веб-сайт, который перенаправляется со старого хоста. У меня нет возможности изменить перенаправление старого хоста.
Проблема в том, что перенаправление добавляет завершающий слеш, когда это неуместно. Пример: http://example.com/picture.jpg/
или http://example.com/page.html/
.
Из-за этого мой сервер возвращает ошибку 404.
В идеале я бы исправил перенаправление со старого сайта, но не могу.
Есть ли способ убрать завершающий слеш в конце URL? Это несложный сайт (простой HTML, никаких скриптовых языков и т. д.).
Я поискал и не смог найти готового решения.
решение1
Вы можете сделать что-то вроде следующего, чтобы удалить завершающий слеш из любого URL-адреса, заканчивающегося расширением файла ( .jpg
, .html
, .png
и т. д.)
RewriteEngine On
RewriteRule ^/?(.+?\.[a-z]{2,4})/$ /$1 [R=302,L]
Изменяйте 302 (временный) на 301 (постоянный) только после того, как убедитесь, что все работает правильно (во избежание проблем с кэшированием).
ОБНОВЛЯТЬ:http перенаправляется на https, а https переписывает забавный завершающий слеш.
Если все эти ссылки являются входящими только для HTTP (не HTTPS), то имеет смысл выполнить это перенаправление только в HTTP vHost вместо этого и перенаправить напрямую на HTTPS. Например:
RewriteRule ^/(.+?\.[a-z]{2,4})/$ https://example.com/$1 [R=302,L]
(Хотя, конечно, если он находится в vHost для HTTPS, то он будет перехватывать все запросы.)