Полностью запутался в связывании относительно корня по сравнению со связыванием относительно документа
Я задал вопрос о 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 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.