редирект с заглавных букв на строчные wordpress

WordPress.org

При транслитерации новой метки создается страница на транслите и на русском. Примерно так:
/tag/alkogol и /tag/%D0%B0%D0%BB%D0%BA%D0%BE%D0%B3%D0%BE%D0%BB%D1%8C

Включаю в плагине функцию “Перенаправление со старых URL на новые” с русского на латиницу не перенаправляет. Можно с помощью Вашего плагина проблему дублирования меток решить?

И спасибо за один из лучших плагинов!

The page I need help with: [log in to see the link]

P.S. Включил опцию “Не использовать транслитерацию во фронтенде”, вроде заработало. Стало редиректить с русских меток на транслит.

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

Попробую опцию “Принудительная транслитерация” включить. Может поможет. Отпишусь.

В общем, не работает с даже принудительной транслитерацией. Редирект с русских меток на транслит есть, транслитерация новых статей не работает. Если “Не использовать транслитерацию во фронтенде” отключаю, то наоборот – транслитерация новых статей работает, редирект отключается.

Обязательно исследуем эту проблему и напишем по результату!


С уважением,
Александр

Может поможет: я пока эту функцию в плагине отключил, поставил плагин WP Translitera. Заработало корректно.

Я понял в чем проблема, в следующем обновлении проблема будет исправлена.

Проверьте заодно, обнаружил на плагине WP Translitera проблемку, возможно в вашем плагине она тоже есть. В WP Translitera нет редиректа с заглавных латинских букв на обычные. Мне сейчас Яндекс предъявил за дубли страниц 🙂

Например:
https://politnews.net/tag/Elektromobili
и
https://politnews.net/tag/elektromobili
он считает разными страницами, дублирующими друг друга. Заглавные не обязательно первые, могут и в середине возникать.

В общем, жду обновления вашего плагина!

Проблема исправлена в новой версии, последнее ваше сообщение еще не тестировал. Если будут проблемы, сообщите об этом. Постараюсь выпустить срочное обновление.

Потестил обновление. Осталась проблема. Точнее, обе проблемы. В случае с кириллицей плагин не редиректит на адрес на транслите, а оставляет на кириллическом, но там на странице нет записей (не 404, а просто пишет. что записей нет). Раньше оставлял на странице с записями.
Например, такой https://politnews.net/tag/политика
оставляет там же (пример не работает, я пока на wp-translintra сижу, редирект корректно работает)

А вот этот глюк на обоих плагинах: https://politnews.net/tag/pOlitiKa или https://politnews.net/tag/politikA
С адресов с заглавными буквами редиректа нет на маленькие. А поисковикам (Яндексу) кажется, что это дубли.

Александр, в догонку, может пригодится.

Проблему редиректа с заглавных букв на строчные решил в htaccess вот такой конструкцией:

Но Вашим плагином было бы лучше. Минус один лишний плагин на сайте и у Вашего плагина функционал уже есть, осталось все подправить, чтобы работало.

Можете связаться со мной по скайпу iqueryable_fenom?

Я хочу помочь вам с решением проблему, но не могу ее воспроизвести. Если поможете, я исправлю это в ближайшей версии плагина.

Обновление планирую на завтра или послезавтра.

Источник

linux-notes.org

редирект с заглавных букв на строчные wordpress. Смотреть фото редирект с заглавных букв на строчные wordpress. Смотреть картинку редирект с заглавных букв на строчные wordpress. Картинка про редирект с заглавных букв на строчные wordpress. Фото редирект с заглавных букв на строчные wordpress

Недавно, столкнулся с проблемой, нужно было сделать реврайт для замены прописных букв в строчные. Решил написать статью «Rewrite правила для замены прописных букв в строчные», возможно кому-то еще будет полезным.

Rewrite правила для замены прописных букв в строчные для apache

Использование RewriteMap в самом httpd.conf.

Вот еще один способ:

Приведу еще один способ для того чтобы вы смогли выбрать 1 на свой вкус. Прежде всего, необходимо добавить эту строку в httpd.conf, чтобы определить RewriteMap:

Использование mod_speling в httpd.conf.

Вы можете проверить что позволяет делать mod_speling модуль в апаче. Я лично не использую его, но многие люди любят его. По этому, приведу пример и с ним:

Решаем проблему с WP:

Использование perl.

Можно использовать perl для того чтобы перевести буквы с одного регистра в другой, для этого используйте:

Есть еще несколько способов сделать подобное, но я решил привести наиболее распространенные.

Rewrite правила для замены прописных букв в строчные для nginx

Создаем в конфиге локейшен:

Но на мой взгляд, более правильный вариант:

PS: Нужно перед этим инициализировать переменную uri_lowercase

Или если нужно сделать это с исключениями:

С использованием perl.

Как я описывал для apache, можно сделать подобное и для nginx:

С использованием lua.

Вот и все. Надеюсь было все понятно. Я завершаю свою тему «Rewrite правила для замены прописных букв в строчные».

Источник

Drupal Русскоязычное сообщество

Ребята, у кого будут какие мысли?

Бьюсь над переадресацией урлов с верхнего регистра в нижний.

Перепробовала массу вариантов, из всех сработали два:

Собственно, сам rewrite-strtolower.php:

Видать где-то происходит не корректный редирект.
У кого есть идеи почему так может происходить?

Комментарии

а почему вы не попробуете сгенерировать новые урлы, сохранив старые, и делать переадресацию со старых на новые по 301?

так все урлы идут в нижнем регистре в принципе. В верхнем регистре их нет вообще, но если вбить в адрессной строке site.ru/catalog/meBEL страничка будет доступна и гугл тоже ее видит, а по идее должна срабатывать переадресация на site.ru/catalog/mebel

и?
Вас беспокоит то, что гугл «увидит» эти ссылки и будут дубли?
Ну так не давайте гуглу эти ссылки.

а разве puthauto это не умеет? У него же в настройках есть удаление всех синонимов и генерация новых, так же есть настройка переводить все в нижний регистр.

и?
Вас беспокоит то, что гугл «увидит» эти ссылки и будут дубли?
Ну так не давайте гуглу эти ссылки.

Да, это же дублирование страницы. Как не давать их гуглу? я же не могу запретить ему не видеть заглавные буквы. А их можно ввести в любом урле на сайте и адрес будет доступен, вот и логично сделать 301.

а разве puthauto это не умеет? У него же в настройках есть удаление всех синонимов и генерация новых, так же есть настройка переводить все в нижний регистр.

даже когда делаю грубо:

Происходят теже ошибки. Видимо сам Drupal не воспринимает strtolower или может быть дело в хостинге? такое возможно?

Еще вариант по переадресации.

Создайте модуль redirectto
В redirectto.module пропишите вот это

включите модуль, обновите кеш и должно переносить.
Это если на пхп.

Что бы не писать переадресации, рекоммендую написать свой токен для формирования ссылок

Идея хорошая, попробую попробовать еще так

Я нашел решение!
В index.php в корневой папке вставь код:

Модуль создаем, и что бы с кэшем проблем не было то хук другой юзать нужно,

Трекер

Проблемы с кодировкой

Feeds импорт товаров в Commerce. Помогите разобраться с тонкостями и логикой

D9: А это нормально, что для uid = 1 не отображаются чекбоксы ролей?

Хочу сделать самонаполняемый сайт по ключевым словам.

index.php то появляется, то исчезает после обновления страницы

Ищем разработчика Drupal (проектная/почасовая)

Какой способ создания ссылок в меню header для различных разделов новостей лучший и самый правильный?

Кастом по импорту products commerce. Дайте рекомендации

Новые материалы

D9: А это нормально, что для uid = 1 не отображаются чекбоксы ролей?

Хочу сделать самонаполняемый сайт по ключевым словам.

Какой способ создания ссылок в меню header для различных разделов новостей лучший и самый правильный?

Кастом по импорту products commerce. Дайте рекомендации

Проблемы с кодировкой

Ищем разработчика Drupal (проектная/почасовая)

Перед импорт конфиграций нужно влючать новые модули. Это так и нужно? Так всегда было?

Где находятся базовые и новые страницы в drupal 7

На развитие drupal.ru

Ваша финансовая помощь дает нам возможность оплачивать хостинг и поддерживать стабильную работу сайта. Благодарим за поддержку!

Источник

Руководство по настройке htaccess (переадресации, ЧПУ) для SEO

На сегодняшний день существует немало CMS систем, но лишь единицы из них имеют штатные, нужные SEO- специалисту, решения. Однако их базовые возможности весьма скудны и в полной мере не могут помочь присти сайт к оптимальному для поисковиков и пользователей виду. Установка же сторонних дополнений лишь утяжеляет движок, делая его более требовательным к железу, а обилие рекламы и сопутствующих копирайтов не идет на пользу позициям проекта в выдаче. В связи с этими обстоятельствами оптимальным выходом является ручная корректировка htaccess. Впрочем, все «по полочкам» расставлю в данной статье.

В сравнении с расширениями для CMS-систем (к примеру, плагины для WordPress), использование прямых указаний в htaccess имеет ряд неоспоримых преимуществ. Перечислим основные из них:
1. Уменьшение нагрузки на MySQL. SEO-дополнения регулярно обращаются к базе данных, так как именно там сохраняется информация о текущей конфигурации. В то же время, редиректы через htaccess функционируют на уровне сервера — их использование ощутимо повышает общую производительность проекта.
2. Работа в условиях ограниченного доступа. Файл дополнительной конфигурации позволяет задавать параметры для отдельных каталогов. Благодаря ему можно осуществлять тонкую настройку даже в том случае, если ресурс размещен на шаред-хостинге и непосредственная работа с httpd.conf невозможна.
3. Дополнительная защита. В отличие от robots.txt, директивы, прописанные в htaccess обязательны к исполнению Apache. Это обеспечивает эффективное управление индексацией, а также защиту системы от спам-ботов и сканеров.

редирект с заглавных букв на строчные wordpress. Смотреть фото редирект с заглавных букв на строчные wordpress. Смотреть картинку редирект с заглавных букв на строчные wordpress. Картинка про редирект с заглавных букв на строчные wordpress. Фото редирект с заглавных букв на строчные wordpress

Теперь давайте перейдем от теории к практике и начнем с наиболее известных приемов внутренней оптимизации, знакомых многим веб-мастерам.
Важное замечание: прежде, чем прибегать к описанным ниже методикам, обязательно сделайте резервную копию, особенно если ранее никогда не работали с Апачем напрямую.

Базовые возможности htaccess

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

1. Страницы ошибок
При возникновении технических неполадок с хостингом или сайтом, выдается один из стандартных кодов состояния HTTP. Воспользовавшись директивой ErrorDocument, можно задать автоматическое перенаправление пользователей к соответствующим html-документам. При этом htaccess будет выглядеть следующим образом:

ErrorDocument ошибка /errors/ошибки.html

Например:
ErrorDocument 404 /errors/404.html

Наиболее распространенные ошибки:
403 — запрет на доступ к файлу/странице
404 — запрашиваемый документ/ссылка отсутствует, либо не корректный URL.
500 — внутренняя ошибка сервера.

2. Запрет просмотра для определенных User-Agent
Абсолютно каждое интернет-приложение, будь то браузер или поисковый робот, имеет особый идентификатор — User-Agent. Зная его значение, можно заблокировать нежелательные программы. В СЕО указанный прием используется для запрета индексации и защиты от различных сканеров. Также можно весьма эффективно противостоять спаммерам. Переадресация htaccess такова:

Выше мы запретили доступ к площадке условным спам-ботам 1 и 2. При попытке сканирования, будет выводиться стандартная 403 ошибка.
Примечание: указанная выше методика, несмотря на все преимущества, имеет один недостаток — требуется знать User-Agent утилиты, которую вы хотите запретить. Спамеры стараются обойти подобную защиту, оставляя его пустым, либо размещая там случайную информацию. Противодействовать вредоносным программам в этом случае можно с помощью такого кода:

Запись позволяет отфильтровывать пустые и подозрительные User-Agent, а также сканеры, использующие наиболее популярные методы парсинга веб-сайтов.

3. Запрет хотлинков
Термин “хотлинк” обозначает подключение к веб-странице файла (чаще всего, изображения), расположенного на сторонних ресурсах. Мало того, что у вас, фактически, воруют контент — при этом создается еще и дополнительная нагрузка на проект. Бороться с этим можно, настроив в htaccess проверку переменной HTTP_REFERER. Если ее значение не совпадает с именем сервера, на котором размещен оригинал, изображение будет подменяться “заглушкой” (например, картинкой с вашим копирайтом):

# Проверка HTTP_REFERER RewriteEngine On RewriteCond % !^$ RewriteCond % !^http://(.+\.)?tekseo\.su/ [NC] # Замена запрашиваемого файла картинкой с копирайтом RewriteCond % !copyright\.gif$ [NC] RewriteRule \.(jpg|jpeg|gif|bmp|png)$ https://tekseo.su/images/copyright.gif [L]

4. Технические работы
Если планируются глобальные изменения (редизайн, или добавление нового функционала), возникает необходимость установки “заглушки”. Штатные средства большинства движков закрывают сайт для всех, что весьма неудобно. Однако настроенный через htaccess редирект позволяет оставить проект доступным администратору, в то же время демонстрируя посетителям страницу с информацией о технических работах:

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

В первую очередь, стоит разобраться с файлами, которые практически никогда не изменяются (изображения, документы pdf, doc, видео):

Header set Cache-Control «max-age=29030400, private»

Здесь для файлов с перечисленными расширениями мы установили заголовок Cache-Control, задав срок хранения в 1 год через переменную max-age. Вы можете уменьшить данный интервал, однако учтите — время задается в секундах. Private указывает, что кэширование необходимо осуществлять только на стороне пользователя, минуя прокси.

Правило для скриптов, стилей, xml лучше всего прописать отдельно, снизив время до пары дней:

Header set Cache-Control «max-age=172800, private»

Динамические страницы лучше исключить из кэша вообще:

Header unset Cache-Control

Также можно задать период в 30-60 секунд (это практически не создаст проблем посетителям, однако поможет снизить нагрузку на Апач в прайм-тайм).

6. Управляем индексированием
Поисковики склонны своевольничать, не оглядываясь на инструкции robots.txt. Особенно часто этим грешит Google, способный проиндексировать даже закрытую страницу, перейдя на ресурс по внешнему линку. Частично проблема решается через мета-тег robots, вот только его можно указать лишь для html-документа. Если же от цепких лап «паука» требуется скрыть файл, стоит обратиться к htaccess, благо X-Robots-Tag поддерживает все существующие директивы индексирования:

Header set X-Robots-Tag “index, nofollow, noarchive, nosnippet”

7. Сообщаем Гуглу о мобильной версии сайта
Если веб-ресурс генерирует различный код в зависимости от устройства пользователя, с которого осуществляется просмотр, а ссылки при этом не меняются, велик риск попасть под санкции Google (такое поведение может расцениваться как попытка подмены контента). Неприятностей можно избежать, прописав строчку:

Header append Vary User-Agent

Данная запись сообщает, что содержимое страницы варьируется в зависимости от User-Agent.

Настройка постоянного редиректа

Код состояния HTTP 301 указывает на то, что запрошенный документ навсегда сменил адрес, а текущий URL следует считать устаревшим. Это позволяет не только перенести весь заработанный вес (в том числе: Траст, PR, ТИЦ), но и автоматически переправить пользователя на корректную страницу.

редирект с заглавных букв на строчные wordpress. Смотреть фото редирект с заглавных букв на строчные wordpress. Смотреть картинку редирект с заглавных букв на строчные wordpress. Картинка про редирект с заглавных букв на строчные wordpress. Фото редирект с заглавных букв на строчные wordpress

1. Со старого URL на новый
Самая простая переадресация htaccess может быть задана с помощью директивы Redirect, используемой модулем Apache — mod_alias. Выглядит запись таким образом:

Redirect 301 /old-page.html https://tekseo.su/new-page.html

Преимущество способа заключается в простом синтаксисе, недостаток — в том, что для перенаправления большого количества устаревших адресов, придется вручную прописывать каждый. Если же их число составляет десятки и сотни, лучше всего использовать mod_rewrite, который позволяет задавать redirect посредством регулярных выражений. Такой подход открывает широчайшие возможности для управления URL, в том числе создавать ЧПУ из автоматически сгенерированных ссылок. Для использования этого метода необходимо активировать (т.е. прописать в htaccess) не только сам модуль, но и опцию FollowSymLinks:

Options +FollowSymLinks RewriteEngine On # Размещаемый код редиректа

2. Склейка домена с www и без www
Можно сказать, что это — основы технического SEO, ведь именно данные правила помогают исключить множественные дубли контента и объединить вес входящих ссылок. Существует два различных решения, одно из которых привязано к конкретному домену, другое же является универсальным. Чем именно воспользоваться — дело вкуса. Синтаксис таков:

а) Переадресация домена с префиксом www на домен без www

RewriteCond % ^www.tekseo\.su$ [NC] RewriteRule ^(.*)$ https://tekseo.su/$1 [R=301,L]

RewriteCond % ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

б) Перенаправление домена без префикса www на домен с www

RewriteCond % ^tekseo\.su$ [NC] RewriteRule ^(.*)$ http://www.tekseo.su/$1 [R=301,L]

То же самое, но без привязки к домену:

RewriteCond % ^(.*)$ [NC] RewriteCond % !^www\. [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]

3. Лишние слэши и тире
Весьма распространенная болезнь CMS — доступность сайта по адресам со знаком «/» на конце и без. Проблему также способен решить 301 redirect в htaccess, причем возможны два варианта:

а) Если вы желаете получить URL вида https://tekseo.su, необходимо прописать:

б) Если, напротив, требуется получить линки в формате https://tekseo.su/, то:

Помимо этого, может наблюдаться появление лишних слэшей или тире (например, https://tekseo.su/category///page—1.html). 301 редирект в htaccess выглядит:

4. Избавляемся от index.php и index.html
Другая ситуация — дублирование урлов с index.php на конце. Побороть ее можно с помощью пары строчек:

RewriteCond % ^[A-Z]<3,9>\ /index\.php\ HTTP/ RewriteRule ^index\.php$ https://tekseo.su/ [R=301,L]

Выше задан redirect 301 в htaccess для homepage. Аналогичным образом можно удалить index.php для любой другой категории:

RewriteCond % ^[A-Z]<3,9>\ /category/index\.php\ HTTP/ RewriteRule ^index\.php$ https://tekseo.su/category/ [R=301,L]

5. Меняем домен
Если сайт переименован, стоит задать глобальную переадресацию. Сделаем перенаправление с tekseo.su и www.tekseo.su на http://new-tekseo.su/

RewriteCond % ^www\.tekseo\.su$ [NC] RewriteRule ^(.*)$ http://new-tekseo.su/$1 [L,R=301] RewriteCond % ^tekseo\.su$ [NC] RewriteRule ^(.*)$ http://new-tekseo.su/$1 [L,R=301]

6. Склейка доменов
При использовании алиасов, дабы исключить появление дублей, осуществляется склейка доменов. Сделать это можно посредством robots.txt, указав поисковым роботам основное зеркало, однако перенаправление является более надежным методом. Здесь задан редирект с tekseo.com и www.tekseo.com на tekseo.su:

RewriteCond % ^tekseo.com$ [OR,NC] RewriteCond % ^www.tekseo.com$ [NC] RewriteCond % !^/robots.* RewriteRule ^(.*)$ https://tekseo.su/$1 [R=301,L]

7. 301 редирект ссылки с GET-параметром на другую динамическую
Достаточно нетривиальная задача, подобная необходимость может возникнуть при обновлении модулей, или радикальной переработке структуры размещенного контента. Разберем на следующем примере — ссылку вида /?option=mod_articles&pageid=title1 нужно переправить на /module/articles/?pageid=title1:

RewriteCond % ^/?option=mod_articles&pageid=(.*)$ [NC] RewriteRule ^(.*)$ http://www.tekseo.su/module/articles/?pageid=%1 [R=301,L]

Другой случай из разряда казуистики: установив SEF-модуль на свой сайт, вы можете обнаружить, что он конфликтует с некоторыми расширениями, заботливо удаляя параметры из сгенерированных урлов. Если в целом новая система полностью вас устраивает, от нее не обязательно отказываться — достаточно прописать переадресацию в htaccess, передавая часть URL в виде GET-запроса (проще говоря, подставить вопросительный знак в нужное место ссылки):

RewriteCond % ^/parametеr$ RewriteRule ^(.*)$ http://site.com/?$1 [R=301,L]

Здесь мы сделали подмену исходного статического адреса http://www.tekseo.su/parametеr на динамический http://www.tekseo.su/?parametеr.

Формирование ЧПУ на уровне сервера

Создание человекопонятных урлов — одна из ключевых задач технической оптимизации веб-ресурсов. В отличие от примеров, приведенных выше, универсального рецепта здесь не существует. Прописывание автоматических ЧПУ в htaccess требует знания регулярных выражений. В нашем случае они будут использоваться для обнаружения тех или иных фрагментов ссылок и последующей их замены/удаления с целью получения SEF-конструкций. Для грамотного их построения применяются знаки препинания и специальные символы:
“^” — циркумфлекс, начало строки;
“$” — доллар, конец строки;
“.” — точка, любой единичный символ;
“*” — звездочка, любое количество символов, расположенных после указанного знака. Самостоятельно практически не используется;
“.*” — точка и звездочка, любое число любых символов;
“+” — плюс, аналог звездочки, однако предшествующий ему символ должен присутствовать хотя бы один раз;
“?” — знак вопроса, указывает, что стоящая перед ним конструкция (будь то единственный символ или группа) может отсутствовать (например, редирект 301 в htaccess, содержащий ^/page_1/?$ будет работать независимо от того, есть на конце слэш или нет);
“()” — круглые скобки, выделяют некую последовательность (запись формата (.*) обозначает группу из любого количества случайных знаков);
“[]” — квадратные скобки, любой указанный символ (^1 будет означать, что в начале строки может располагаться случайная цифра от 0 до 9);
“<>” — фигурные скобки, указывают, сколько раз встречается символ или их сочетание (так, выражение [a-z] <3>значит, что строчные буквы латинского алфавита могут встречаться три раза);
“|” — вертикальная черта, логический оператор “or” (или), задает несколько условий (например, можно перечислить вероятные расширения файлов (jpg|jpeg|gif|bmp|png));
“\” — обратный слэш, служит для экранирования служебных знаков, если они являются предметом поиска (то есть, сочетание «\.» означает, что точка — значимый символ).

Еще одна важная деталь — флаги, идущие после кода htaccess redirect и заключенные в квадратные скобки. Нас интересуют следующие:

L — останавливает преобразования адреса сразу после выполнения строчки;
R= — определяет тип редиректа, если значение не указать, сервер по умолчанию выдаст код 302 (перемещен временно);
NC — независимо от регистра, позволяет обрабатывать урлы с заглавными и строчными буквами одним и тем же правилом;
S= — указывает количество правил, которые нужно пропустить;
N — сигнализирует о необходимости перезапуска, при этом обрабатывая результат предыдущего преобразования;
F — выводит ошибку 403 (доступ запрещен).

Теперь осталась самая малость — изучить директивы, переменные окружения Apache и опции, после чего вы сможете создавать редиректы htaccess самостоятельно. Строго говоря, из директив требуется знать только две основные:
RewriteCond — посредством нее задаются условия, при которых выполняется соответствующее правило;
RewriteRule — применяется собственно для задания перенаправления.

Из всего обилия переменных окружения наиболее часто употребляются следующие:
REQUEST_FILENAME (или SCRIPT_FILENAME) — полный путь к файлу, соответствующий текущему запросу;
REQUEST_URI — путь, прописанный в HTTP-запросе;
QUERY_STRING — GET-параметры.

Опции же пригодятся такие:
-d — проверка, ведет ли заданный путь к каталогу;
-f — проверка, является ли имя файлом;
-s — действует аналогично f, однако также проверяет размер файла (он должен быть больше 0).

Для чего можно использовать приведенную выше информацию? Прежде всего, для создания следующей записи, которая должна предварять код генерации SEF:

Данная конструкция проверяет, не является ли запрос путем к файлу или каталогу. Восклицательный знак перед опциями обозначает отрицание. Если условие соблюдено, значит перед нами ссылка и она будет обработана в соответствии с правилами, прописанными в RewriteRule.

Порядковые номера переменным присваиваются автоматически, слева направо. Иными словами, вам не придется явно их объявлять. Для большей наглядности, давайте разберем правило для создания красивого URL, включающее три переменные, а заодно применим на практике знания регулярных выражений.

Это можно сделать буквально в одну строчку:

RewriteRule ^articles/([A-Za-z0-9-]+)/(.+)/(8+).html$ index.php?cat=$1&subcat=$2&page=$3 [L]

Переменные распределились таким образом:
редирект с заглавных букв на строчные wordpress. Смотреть фото редирект с заглавных букв на строчные wordpress. Смотреть картинку редирект с заглавных букв на строчные wordpress. Картинка про редирект с заглавных букв на строчные wordpress. Фото редирект с заглавных букв на строчные wordpress

Им соответствуют следующие регулярные выражения:
$1=([A-Za-z0-9-]+) — здесь мы указали, что последовательность может содержать цифры, заглавные и строчные буквы латиницы, а также тире;
$2=(.+) — второй блок может содержать любой символ;
$3=(5+) — третий, только цифры.

Если заданные условия соблюдены, происходит подстановка соответствующего значения GET-параметра, из них и формируется SEF-линк.

Переменную %1 проиллюстрируем на примере рассмотренного выше универсального редиректа на домен без www. Здесь с помощью %1 мы подставляем значения, заданные в RewriteCond.

RewriteCond % ^www\.(.*)$ [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Еще один важный для понимания момент: файл htaccess технически не преобразует динамические ссылки в статические, а расшифровывает представленную Апачу статику, трансформируя в соответствующий динамический урл. Именно поэтому в правилах мы сперва записываем своеобразный “макет” того, что хотим получить, и лишь затем отмечаем переменными необходимые GET-запросы.

Понимание регулярных выражений дает возможность задавать редиректы через htaccess практически любой сложности. Зная синтаксис, можно создавать правила для SEF-адресов независимо от типа и особенностей системы управления контентом. Давайте же теперь разберем различные варианты подобного кода:

1. Удаление технических категорий
Исключение из ссылки ненужных элементов позволяет сократить ее длину. Многие движки создают древовидные структуры документов, добавляя в URL служебную информацию (например, “category” в WordPress). В итоге урлы становятся чересчур громоздкими, принимая вид https://tekseo.su/category/articles/page_1.html. Данную проблему можно решить с помощью специализированных плагинов, либо прописав ЧПУ в htaccess. Последнее также пригодится владельцам самописных ресурсов, не поддерживающих SEO функционал. Для указанного примера правило будет выглядеть следующим образом:

RewriteRule ^category/(.+)$ https://tekseo.su/ [R=301,L]

На выходе мы получим: https://tekseo.su/articles/page_1.html

2. Преобразование динамических ссылок в ЧПУ
Весьма плохо обстоят дела с динамическими ссылками, представляющими собой адрес исполняемого скрипта и GET-параметр, который ему передается. В этом случает исходный урл содержит знак вопроса, что осложняет процесс создания редиректа. Apache обрабатывает их следующим образом: все, что находится до “?” воспринимается как URl, все, что после — становится параметром, передаваемым скрипту. Чтобы перенаправление сработало верно, обработку нужно разбить на две части. В зависимости от местоположения знака, возможны варианты:

а). Знак вопроса находится после названия файла (например, https://tekseo.su/index.php?cat_id=345):

RewriteCond % ^cat_id=345$ RewriteRule ^index\.php$ https://tekseo.su/page_1? [L,R=301]

б). Если же вопросительный знак идет сразу после слэша (например, https://tekseo.su/pages/?cat_id=345), 301 редирект необходимо прописывать немного иначе:

RewriteCond % ^cat_id=345 RewriteRule ^(.*)$ https://tekseo.su/page_1? [L,R=301]

Автоматизировать процесс перезаписи можно, используя переменные. Тогда конструкция становится даже более наглядной. Усложним предыдущий пример. Предположим, у нас есть ссылка https://tekseo.su/index.php?cat_id=myposts&page_id=text. Требуется привести ее к формату https://tekseo.su/articles/myposts/text.html. Кроме того, мы хотим, чтобы данное правило работало для любых аналогичных URL. Запись будет выглядеть так:

RewriteRule ^articles/(.+)/(.+).html index.php?cat_id=$1&page_id=$2 [NC]

Особое применение 301-го редиректа

В заключении разберем нестандартные варианты использования hypertext access.

Давайте зададим перенаправление запросов с tekseo.su на тексео.рф:

RewriteEngine on RewriteCond % ^www\.tekseo.su [NC] RewriteRule ^(.*)$ http://xn--e1aaornd.xn--p1ai /$1 [R=301,L]

2. Подмена внешней ссылки на внутреннюю
Достаточно остроумный способ, позволяющий сделать урл, ведущий на сторонний ресурс, внутренним в глазах поисковых роботов. Представим ситуацию: вы хотите поставить на своем сайте линк на профиль ВКонтакте http://vk.com/id12345. Чтобы скрыть его от глаз роботов, можно воспользоваться атрибутом nofollow, либо создать мнимую страницу “my_social”, добавив следующее:

RewriteEngine on Redirect 301 https://tekseo.su/my_social http://vk.com/vk_id12345

Формально ссылка останется внутренней, при этом пользователи ресурса ничего не заметят.

3. Редирект с прописных на строчные буквы
Одна из распространенных проблем многих CMS — появление дублей страниц, начинающихся с прописных и строчных букв (например, tekseo.su/Page1 и tekseo.su/page1). 301 редирект в htaccess способен справиться и с этой задачей, причем обработка будет происходить в автоматическом режиме и вам не придется описывать перенаправление вручную для каждого URL. Решение таково:

4. Каноничные адреса для файлов
12 февраля 2009 года Гугл аннонсировал поддержку тега rel=”canonical”. Одновременно о работе с атрибутом заявили Yahoo и Bing, а в настоящее время канонические ссылки распознают практически все крупные поисковики. С помощью него можно указать, какая из копий веб-документа является исходной, передав оригиналу значения тИЦ, PR и т.д.

Чтобы задать rel=”canonical”, его необходимо прописать внутри тега соответствующей страницы:

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

Header add Link ‘ ; rel=”canonical”‘

А регулярные выражения позволят указать в htaccess канонические версии сразу для всех файлов:

RewriteRule ([^/]+).pdf$ – [E=FILENAME:$1] Header add Link ‘ ; rel=”canonical”‘

5. Запрещаем воровство статей ВКонтакте
В процессе борьбы с дублями контента вы можете обнаружить ссылки такого вида: http://www.tekseo.su/page-name.html&post=-123_456. Эта проблема связана с наличием плагина социальных сетей, а именно — кнопкой ВКонтакте. Когда кто-либо решает поделиться очередной статьей на стене, в паблике или группе, автоматически генерируется подобный адрес. И все бы ничего, но такие урлы «на ура» индексируются поисковиком Google. Чтобы это предотвратить, достаточно добавить в htaccess следующее:

Как видно, потенциал hypertext access чрезвычайно высок. Его грамотное использование позволяет решать абсолютное большинство задач технической оптимизации, используя нативные модули сервера. Что немаловажно, благодаря этому можно отказаться от программных “костылей”, получая дополнительные выгоды, в числе которых повышение производительности и защищенности курируемого проекта.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *