Как перенаправить двойной URL на один URL с помощью htaccess - PullRequest
0 голосов
/ 20 сентября 2018

Консоль поиска Google показывает ошибку 404 Страница не найдена для

https://example.com/page/https://example.com/page/

, и ссылка идет с внешнего веб-сайта.

Я хочу перенаправить с помощью .htaccess:

https://example.com/page/https://example.com/page/

до

https://example.com/page/

Может кто-нибудь помочь мне в этом вопросе?

1 Ответ

0 голосов
/ 21 сентября 2018

Попробуйте следующие директивы mod_rewrite в верхней части вашего .htaccess файла:

RewriteEngine On
RewriteRule ^(.*?)https?:/ /$1 [R=301,L]

Это просто удаляет любую завершающую часть в URL-пути, которая начинается http:/ (или https:/).

ОБНОВЛЕНИЕ: ? в подкаталоге захвата (.*?) делает его нежадным, поэтому он фиксирует только до первого вхождения https:/ и отбрасывает остальные, а нечем до последнего вхождения (жадный) и зацикливания (цикл перенаправления) до тех пор, пока не будут удалены все вхождения https:/.

Дополнительные примечания:

  • Первый тест с 302 (временным) перенаправлением, чтобы убедиться, что он работает.Измените значение на 301 только после подтверждения, чтобы избежать проблем с кэшированием.

  • В URL-пути, который соответствует шаблону RewriteRule , уже уменьшены последовательности косых чертодинарные косые черты, поэтому вы не можете сопоставить // (двойная косая черта) здесь (но я не думаю, что вам нужно).

  • Если есть строки запроса, то выможет потребоваться немного другой подход и другая директива, поскольку сама строка запроса (в отличие от URL-пути) может содержать «повторный URL», который необходимо удалить (сначала нам нужно будет увидеть пример).Шаблон RewriteRule соответствует только URL-пути, но не строке запроса.

  • В Windows: если двоеточие (схема и) (:)) появляется в первом сегменте пути (т. е. неверно сформированная ссылка предназначена для корня документа), после чего Apache сгенерирует 403 Forbidden , прежде чем .htaccess сможет перенаправить.Вы ничего не можете сделать, чтобы избежать этого, так как это ограничение ОС (двоеточия не допускаются в путях файловой системы - 403 возникает, когда Apache пытается сопоставить URL-адрес с путем в файловой системе).Это не происходит в Linux.Например: https://example.com/https://example.com/.


ОБНОВЛЕНИЕ: Если вы не видите перенаправления, просто 404, то вам может потребоваться включить дополнительная информация о пути (PATH_INFO) в ваших URL.Например, в верхней части файла .htaccess:

AcceptPathInfo On
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...