Удаление завершающего слеша из перенаправленных URL-адресов (.jpg/ .htm/ .gif/) с помощью Apache

Удаление завершающего слеша из перенаправленных URL-адресов (.jpg/ .htm/ .gif/) с помощью Apache

У меня есть веб-сайт, который перенаправляется со старого хоста. У меня нет возможности изменить перенаправление старого хоста.

Проблема в том, что перенаправление добавляет завершающий слеш, когда это неуместно. Пример: 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, то он будет перехватывать все запросы.)

Связанный контент