Назад | Перейти на главную страницу

Apache устанавливает слеш на 301

Мы используем Apache (на Runcloud) за Cloudflare для перенаправления ссылок. Это делается с помощью .htaccess, насколько это возможно.

Redirect 301 /advertiser/google https://google.com

По какой-то причине Apache устанавливает завершающую косую черту в конце каждого перенаправления, и некоторые URL-адреса, а именно те, которые не должны содержать завершающую косую черту, не будут работать.

Как настроить Apache для перенаправления именно на URL-адрес в .htaccess?

Обратите внимание: перенаправление HTTP 301 "перемещено навсегда" и, как таковое, будет кэшироваться обоими веб-браузерами, CDN и прокси-серверами, а также после того, как вы измените или удалите Redirect директиве вы все еще можете наблюдать эффекты старой настройки. Возможно, вам придется тестировать в новом анонимном окне браузера и / или очищать кеш после каждого изменения.

Во-вторых: с Redirect любая информация о пути за пределами шаблона в URL-пути, который вы перенаправляете, будет добавлена ​​к целевому URL-адресу.

Другими словами: с настройкой Redirect 301 /advertiser/google https://google.com запрос с более длинным путем http://example.com/advertiser/google/more должен быть перенаправлен Apache на https://google.com/more.

Когда запрос на http://example.com/advertiser/google перенаправляется на https://google.com/ (с добавленной косой чертой в конце) наиболее вероятная причина заключается в том, что что-то в вашей конфигурации сначала добавляет эту завершающую косую черту и преобразует запрос до применения перенаправления.

Вы можете обойти эффекты кеширования как из облачной CDN, так и из вашего собственного веб-браузера, и протестировать свою конфигурацию, отправив запросы непосредственно на свой веб-сервер с помощью клиента командной строки, например:

 curl -v -H "Host: example.com" http://<real-IP-address-of-your-webserver>/advertiser/google

и сравните это с

  curl -v http://example.com/advertiser/google