Я работаю над одним сайтом, где мне нужно отображать 404 страницы, когда кто-то добавляет двойной слэш в URL.
Я написал логику для проверки REQUEST_URI, и если есть двойная косая черта, я показываю 404 страницы ...
Но когда я добавляю двойную косую черту в URL-адрес, она показывает одинарную косую черту в REQUEST_URI, но в URL-адресе это двойная косая черта ...
здесь я приложил снимок экрана с той же проблемой.
Например: если я ввожу www.example.com//check -> тогда это идет как /чек в REQUEST_URI но я хочу, чтобы это было как //чек
Сайт размещен в Облачный балансировщик нагрузки AWS (ELB). в локальных настройках он работает правильно, но в производстве - это проблема создания.
Может ли кто-нибудь помочь мне, как я могу это предотвратить?
Если проблема в том, что Google проиндексировал версию с двойной косой чертой, а также обычный путь, то лучше использовать перенаправление, чтобы отправить Google по правильному пути.
Поскольку вы отметили этот вопрос с помощью nginx, самым простым решением является использование выборочной перезаписи, например:
location / {
if ($request_uri ~ ^//) {
rewrite ^/.* $uri permanent;
}
[...]
}
Это работает, потому что $request_uri
- исходный URI, а $ uri - нормализованный. Оператор rewrite заменяет полный URI нормализованным, чтобы Google знал, что версия с двойной косой чертой должна быть заменена нормализованной.