Объяснение раздвоения личности RewriteRule

Объяснение раздвоения личности RewriteRule SEO SMM интернет маркетинг


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

  • Перезапись URL: превращение динамических параметризованных URL-адресов в читаемые URL-адреса, загружаемые по ключевым словам
  • 301-е: сообщить браузеру (или поисковому боту), что страница была перемещена

Это ОЧЕНЬ разные задачи, с ОЧЕНЬ разными результатами, отправляемыми браузеру или поисковому боту. RewriteRule, в вашей apache2.conf файл, или vhosts, или ваш .htaccess файл, выполняет обе задачи. Вспомните доктора Джекила и мистера Хайда, за исключением … ну, в случае с RewriteRule ни одна из личностей на самом деле не зла.

Итак, как работает RewriteRule?

Это команда, которую вы помещаете (часто много раз) в один из файлов конфигурации вашего веб-сервера. Многие люди помещают директиву RewriteRule в свой файл .htaccess, но на самом деле .htaccess файл следует использовать только для конфигураций, специфичных для каталога, и вы должны использовать свой apache2.conf файл или vhosts вместо этого, чтобы охватить все файлы, запрашиваемые с вашего веб-сервера. Тем не мение, .htaccess может находиться в корневом каталоге вашего веб-сайта и применяться ко всем файлам на вашем сайте, или вы можете переопределить его в определенной подпапке, поместив другой .htaccess файл там. Если вы решите использовать .htaccess, убедитесь, что вы добавили набор директив AllowOverride All.

Каждый запрос, сделанный браузером (или ботом) к веб-серверу, проходит через этот файл. Имейте в виду, что для каждой страницы вашего сайта, к которой обращается пользователь, сервер делает несколько запросов: один для основного HTML, по одному для каждой таблицы стилей, по одному для каждого включенного файла Javascript и по одному для каждого изображения на странице.

Запрошенный URL сравнивается с регулярным выражением, которое является первым параметром в каждом RewriteRule заявление в .htaccess. Если он находит совпадение, то второй параметр в RewriteRule оператор — это страница, которая фактически будет использоваться для создания HTML-кода, который будет отправлен обратно в браузер. Это НЕ обязательно означает, что страница перенаправлена ​​… для этого вам нужно использовать [R] флаг. Но вам нужно использовать [R] флаг? Не так быстро…

Не путайте перенаправление 301 с преобразованием URL для SEO. И то, и другое может случиться RewriteRule, и они выглядят очень, очень похожими. Но, как отвертка и штопор в швейцарском армейском ноже, у них совершенно разные цели.

ТОП-3 ЛУЧШИХ КРЕДИТНЫХ КАРТ ДО 1 МЛН РУБЛЕЙ ДО 365 ДНЕЙ БЕЗ ПРОЦЕНТОВ!


✅Кредитная карта №1
- Беспроцентный период: 365 дней без процентов
- Кредитный лимит до 500 000 рублей
- Доставка и облуживание карты БЕСПЛАТНО!

ПОДРОБНЕЕ >>>


✅Кредитная карта №2
- Беспроцентный период: до 365 дней без процентов
- Кредитный лимит до 1 000 000 рублей
- Доставка и облуживание карты БЕСПЛАТНО!

ПОДРОБНЕЕ >>>

✅Кредитная карта №3
- Беспроцентный период: до 200 дней без % на всё: покупки, переводы, снятие наличных.
- Кредитный  лимит до 1 000 000 рублей
- Доставка и обслуживание карты БЕСПЛАТНО!

ПОДРОБНЕЕ>>>

Вы используете 301, когда хотите сказать браузеру (или роботу Google): «Его больше нет, перейдите ЗДЕСЬ прямо сейчас, чтобы получить его … Я переместил его навсегда». Вы:

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

Если вы используете RewriteRule для «преобразования URL» вы создаете сопоставление между URL-адресами ваших страниц, которые вы показываете внешнему миру (например, в вашей навигации, ссылках в контенте, карте сайта и т. д.), с базовыми страницами, которые фактически генерируют контент. . В большинстве случаев вы делаете это потому, что на базовых страницах используются такие параметры, как идентификаторы продуктов, идентификаторы категорий и т. Д., А не красивые ключевые слова, которые делают ваши URL-адреса удобными для чтения и лучше ранжируются по этим ключевым словам.

Пример:

/products/details.asp?pid=11623&catid=42

Возможно, категория 42 — это ожерелья, а код продукта 11623 — это ваш артикул для определенного аметистового ожерелья. Текст, URL изображения и т. Д. Для этого ожерелья, вероятно, хранятся в вашей базе данных под первичным ключом 11623 (идентификатор продукта этого ожерелья), а информация о категории (например, слово «Ожерелья»), вероятно, хранится в другая таблица в вашей базе данных.

Когда вашему веб-серверу требуется отобразить страницу с этим ожерельем, он может найти категорию с ID = 42 в базе данных, найти ее имя («Ожерелья») и отобразить его в заголовке, метаописании, ссылках на хлебные крошки и т. Д. Будучи умным кросс-продавцом, вы, вероятно, также извлечете из базы данных список других ювелирных изделий в этой категории и также покажете ссылки на эти украшения на странице.

Затем, конечно, ваш веб-сервер просматривает всю информацию о продукте: описание, торговую марку, вес, ссылки на фотографии, цену и т. Д. Из базы данных и вставляет ее в ваш шаблон для страницы. Вуаля, вот ваше очень красивое ожерелье … и ваш очень уродливый URL-адрес.

Вы хотите, чтобы URL-адрес выглядел примерно так:

/ продукты / ожерелья / пурпур-аметист-колье-11623

Но вы по-прежнему хотите сохранить всю логику на параметризованной странице ASP, потому что это работает, а также это довольно эффективный способ извлечь все данные из базы данных и построить страницу для каждого элемента в каталоге продуктов.

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

Если вы 301 до /products/details.asp?pid=11623&catid=42, Google проиндексирует параметризованную версию … и параметризованная версия также появится в браузере пользователя.

Мгновенный макияж! Не то, что вы хотели.

Используете ли вы .htaccess, или ваш обработчик 404 для выполнения ваших перезаписей, решение о том, следует ли переписывать 301 или просто перезаписывать, в основном одно и то же:

  • если вы хотите сообщить Google, что страница действительно находится где-то еще, выполните 301
  • если вы хотите показать красивый URL, но использовать уродливый URL за кулисами для генерации HTML, не используйте 301

Так что же произойдет со ссылочным весом, если вы НЕ используете 301?

Ничего такого. Это все есть. Вы создаете ссылки извне по красивому URL-адресу, и вы делаете ссылку на красивый URL из своего веб-сайта. Что касается робота Googlebot / продукты / ожерелья / пурпур-аметист-колье-11623 ДЕЙСТВИТЕЛЬНО существует, в нем есть весь этот отличный контент (из вашей базы данных), и когда Googlebot
запрашивает эту страницу, они получают обратно весь этот сочный контент, а также HTTP 200 (OK) код состояния.

Зачем людям путать этих двоих? Поскольку RewriteRule заявление в .htaccess позволяет делать и то, и другое с очень похожим синтаксисом.

Синтаксис RewriteRule

Для простого преобразования URL:

RewriteRule ^ oldstuff .html $ newstuff.html

Это проверяет, была ли запрошена страница с именем oldstuff.html. Если это так, он передает управление файлу newstuff.html, чтобы сгенерировать веб-страницу и отправить ее обратно клиенту. Клиент (бот или браузер) все еще думает, что просматривает страницу с названием oldstuff.htmл. № 301.


Прочие примечания: ^ указывает начало имени страницы, так что правило будет соответствовать oldstuff.html но нет действительноoldstuff.html. $ Указывает конец имени файла, так что это правило будет соответствовать oldstuff.html но нет oldstuff.htmlly. Эта косая черта посередине? Итак, этот 1-й параметр — это регулярное выражение (часто называемое регулярным выражением), а в регулярных выражениях. — это подстановочный знак, соответствующий любому одиночному символу. Использование перед ним символа называется «экранированием» символа и указывает на то, что мы не имеем в виду подстановочный знак. скорее мы имеем в виду период.

Теперь 301:

RewriteRule ^ oldstuff .html $ newstuff.html [R=301,L]

Это 301 редирект. Это перенаправление, потому что мы использовали р флаг внутри []. Это 301, потому что мы положили = 301 после р; если бы мы это не указали, это будет редирект 302, который означает, что мы только что временно переместили страницу, и ссылки на нее не будут передавать никакого ссылочного веса. В 99% случаев вы захотите использовать 301, а НЕ 302.

Внутри есть два параметра [] скобки, разделенные запятой. Второй параметр, буква «L», означает Последний. В нем говорится, что если шаблон регулярного выражения соответствует только что запрошенной странице, то после любой обработки (в данном случае 301 перенаправление на newstuff.html) мы можем пропустить проверку страницы на соответствие любому из других правил в .htaccess файл. 99% времени вы захотите использовать L отметьте 301 редирект.

92% случаев вы захотите использовать L флаг с вашими перезаписывающими не-301. Почему не 99%?

Иногда полезно применить несколько правил перезаписи к входящему URL-адресу. Допустим, у вас есть несколько папок первого уровня, которые вы хотите переписать, плюс у вас есть несколько подпапок, которые вы также хотите переписать … каждая из которых находится во всех трех папках первого уровня. Вы можете сделать замену имени основной папки за один RewriteRule (сохраняя папку следующего уровня как есть), затем примените второй RewriteRule который сохраняет только что обновленную верхнюю папку при перезаписи следующей папки вниз.

Пример:

Исходный URL:

  • /prods/metal1/necklace-11623.htm

RewriteRule # 1 может заменить / ювелирные изделия / за / prods / Итак, теперь у вас есть:

  • /jewelry-products/metal17/necklace-11623.htm

RewriteRule # 2 может заменить /золото/ за / metal17 / давая вам:

  • /jewelry-products/gold/necklace-11623.htm

Теперь, что касается бонусных баллов, предположим, что у нас есть целый каталог ювелирных изделий, каждое из которых имеет великолепную фотографию с названием [product ID].jpg. Как очень удобно для нашей базы данных и нашего программиста. Как ужасно отстойно SEO для поиска изображений. Помните, как я сказал, что запросы изображений также проходят через .htaccess? Ты можешь использовать RewriteRule чтобы сопоставить имя изображения с чем-то более понятным, чтобы вы могли показать роботу Googlebot изображение, названное примерно так:

  • /images/necklaces/gold/amethyst-11623.jpg

Вместо настоящего имени файла:

  • /images/prods/11623.jpg

В настоящее время, RewriteRule не Только способ перенаправления или преобразования URL. На следующей неделе я опубликую информацию о том, как это сделать в вашем обработчике ошибок 404 — вместо этого есть некоторые преимущества, в том числе простота отладки ваших переводов, возможность переводить со слов в URL-адресах на идентификаторы, просматривая их в вашу базу данных и преимущества в производительности для больших сайтов.

Несколько ссылок для отважных читателей:

Простое руководство по .htaccess от YOUmoz:

  • https://moz.com/ugc/a-simple-guide-to-htaccess

Помощь с регулярными выражениями:

  • http://www.amk.ca/python/howto/regex/

Информация о настройке обработчика 404 в Apache:

  • http://www.webreference.com/new/011004.html
  • http://www.phpriot.com/articles/search-engine-urls/4

Информация о 301-х в htaccess:

  • http://www.webmasterworld.com/forum92/82.htm

В прошлом посте, который я написал, я написал свой собственный переписчик URL с нуля:

  • https://moz.com/blog/down-and-dirty-write-your-own-url-rewrite
Оцените статью
( Пока оценок нет )
Добавить комментарий

Top.Mail.Ru