Полностью запутался в связывании относительно корня по сравнению со связыванием относительно документа


Я задал вопрос о 404 ошибках, появившихся на нашем веб-сайте в прошлом году, где я вижу, что URL-адреса, которые сейчас все еще выходят из консоли поиска, выглядят следующим образом:

Https://www.example.com/managed-hosting.html

Или

Https://www.example.com/services/services/managed-hosting.html

Но где фактический URL-адрес такой:

Https://www.example.com/services/managed-hosting.html

Ответ, как я бы понял, что нужно было использовать "корневую относительную связь", а не "относительную связь документа". Поскольку URL-адреса в моем HTML являются относительными, это наводит на мысль, что где-то на сайте, возможно, в навигации, у меня есть ошибка (я до сих пор не понимаю, где), и именно здесь была предложена концепция корневой относительной ссылки.

Поэтому вместо использования навигационной ссылки, которая гласит:

Href="../../about/history.html "

Я должен использовать навигационную ссылку, которая читает:

Href="/../../about/history.html "

Но, похоже, с этим есть проблема. Если я не ошибаюсь, дополнительная косая черта в начале сообщает браузеру, что ссылка, которую я вставил, относится к корневому каталогу.

Это означает, что я могу добавить ссылку на любую страницу на любой глубине веб-сайта с надписью "href="/../../../../../directory/document.html "если путь к файлу, указанный выше, правильный?

Похоже, это приводит к более 404 ошибкам на данном этапе.

У меня остается вопрос: должен ли я по-прежнему использовать стандартный индикатор пути к файлу "../" в зависимости от того, насколько глубоко расположен документ, на который я ссылаюсь?

В принципе, с учетом SEO и 404 ошибок, какой из следующих вариантов является правильным для использования при создании ссылок в HTML-документах?

Href="../../about/history.html " (без ведущей косой черты)

Или

Href="/../../about/history.html " (с ведущим косая черта)

В двух словах - должен ли я использовать корневую относительную ссылку для всех моих ссылок на веб-сайте? или относительные ссылки на документы? И должно ли это распространяться также на все файлы изображений и документов?

Я заранее приношу извинения (еще раз), если это звучит туманно, а также если объяснение менее чем понятно. Но в данный момент это сводит меня с ума!

 1
404
Author: spl, 2021-02-06

1 answers

Чтобы преобразовать относительную ссылку в корневую относительную ссылку, вы должны добавить косую черту в начало и убрать ../. Итак:

href="../../about/history.html"

Должно стать:

href="/about/history.html"

Когда относительный URL-адрес начинается с косой черты, он добавляется к вашему доменному имени. Таким образом, /about/history.html добавляется к http://example.com, чтобы стать абсолютным URL-адресом http://example.com/about/history.html В корневом относительном URL-адресе не требуется ../, потому что ../ означает "перейти в каталог". Невозможно подняться по каталогу из корня дерева каталогов для вашего домена.

Ваше использование ../ в корневых относительных URL-адресах все еще может работать, хотя и неэлегантно. Переход по каталогу из корневого каталога должен оставаться в корневом каталоге. Таким образом, http://example.com/../../about/history.html должно быть эквивалентно http://example.com/about/history.html. Использование этого не является стандартной практикой, и я бы не ожидал, что все браузеры и поисковые роботы будут ее поддерживать. Некоторые агенты пользователей, скорее всего, неправильно истолкуют его.

Даже после того, как вы исправите все ссылки на своем сайте, вы можете бесконечно видеть ошибки в поисковой консоли Google. Google запоминает все URL-адреса, на которые вы когда-либо ссылались, и может сообщать об ошибках для URL-адресов, на которые вы ссылались. Чтобы устранить проблемы, вы должны перенаправить на правильный URL-адрес в тех случаях, когда он был испорчен в прошлом. Для этого вы должны иметь возможность поместить такой код в свой файл .htaccess (при условии, что у вас есть веб-хост, использующий Apache 2.4, и что эти правила не противоречат никаким правилам перезаписи):

Redirect permanent /managed-hosting.html /services/managed-hosting.html
Redirect permanent /services/services/ /services/

Второе правило будет обрабатывать все URL-адреса, которые имеют дублированный services/ в начале пути URL.

 1
Author: Stephen Ostermiller, 2021-02-06 22:39:16