Как сделать ЧПУ с помощью .htaccess. Htaccess wordpress чпу
Настройка ЧПУ (человеко-понятный url). Плагин Rus-To-Lat для Wordpress
Всем привет!
В последние время новые статьи на сайте публикуются не так часто, как хотелось бы, но я обещаю исправиться:)
После того как вы установили WordPress первым что нужно сделать это настроить ЧПУ (человеко-понятный url ) .
Установка ЧПУ нужна для того что бы адрес ваших страниц был понятен человеку. Изначально ссылка WordPress выглядит так: http://test.ru/?p=1 (это адрес на статью «Привет-Мир», которая уже есть у вас ) как не крути это не совсем правильно и красиво. Но после, настройки, ваши ссылки будут выглядеть так: http://test.ru/privet-mit.php.Согласитесь так намного красивей. И такие УРЛ лучше воспринимаются поисковыми системами.
Как настроить ЧПУ на WordPress
Заходим в админку блога, открываем Настройки – Постоянные ссылки (ЧПУ).
Я, предлагаю поставить галочку над пунктом «Произвольная структура » и туда вписать код.
/%category%/%postname%.php — в адрес включает категорию и название поста.
Или
/%postname%.html — здесь только название поста.
Выглядит примерно так:
После проделанного обязательно нажимаем «сохранить изменения».
Установка плагина RusToLat
Плагин RusTulat — с помощью которого происходит транслитерация русских букв на латинские и формируется человеко подобные урлы.
Устанавливаем плагин и активируем в админке.
Если вы занялись настройкой ЧПУ для вордпресс не сразу (уже написаны некоторые статьи), то у WordPress бывает глюк — названия статей и рубрик могут не транслитерироваться. В этом случае нужно открыть каждую статью и рубрику для редактирования и сохранить, ничего не изменяя. Вторая проблема, связанная с тем, что вы не сразу занялись настройкой урлов в том, что некоторые ссылки продолжают вести на старые адреса страниц, в результате мы видим ошибку 404. Чтобы это исправить, нужно установить плагин Permalink Redirect, которые пропишет 301-редирект со старых страниц на новые.
ЧПУ и .htaccess
Когда вы изменяете структуру ЧПУ WordPress возможно сам создаст файл .htaccess. Но бывает такое, что из-за настроек хостинга WordPress не может создать файл.Тогда нужно сделать это самому.
Создаем файл.htaccess и кладем в корневой каталог вашего блога. В файл .htaccess нужно поместить код который предлагает WordPress.
Ну и все,теперь вы сделали основные настройки блога.
Возникнут проблемы отвечу в комментариях!
pro-wordpress.ru
PHP: создание ЧПУ в .htaccess
Основной проблемой любого динамического сайта является отсутствие читабельного URL-адреса. В тоже время, читабельный URL-адрес это подсказка о содержащемся на веб-странице контенте. Таким образом, возникает необходимость создать полноценный ЧПУ. Решением может служить использования модуля преобразований на стороне веб-сервера. В данной статье я хочу помочь Вам решить задачи по созданию ЧПУ и настройке преобразований в файле .htaccess с целью дальнейшей обработки запросов пользователей в PHP-скрипте.
Содержание:
- Создание ЧПУ
- Настройка преобразований в .htaccess
- Разбор регулярного выражения в RewriteRule
- Обработчик ЧПУ на PHP
- Подведём итоги
Создание ЧПУ
А начну я с того, что использование модуля преобразований, в качестве полноценного обработчика ЧПУ, нельзя назвать удачным решением. В частности, это часто приводило к сообщениям об ошибках в логах сервера, которые связанны с многоуровневыми ЧПУ.
Например, если: category/name/ – обрабатывается вполне успешно, то вот просто: category/ – даже при наличии соответствующей директивы в файле .htaccess, выдаёт предупреждение. Впрочем, это никак не сказывается на работе самого сайта. Помимо этого есть и ряд других проблем, но я не буду в них вдаваться, т.к. они носят чисто субъективный характер.
Настройка преобразований в .htaccess
При создании сайтов, лучше использовать несколько более простое преобразование URL-адресов, передавая ЧПУ управляющему php-скрипту. Для этого в фале .htaccess нужно указать что-то вроде следующего:
<IfModule mod_rewrite.c>RewriteEngine onRewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-lRewriteCond %{REQUEST_FILENAME} !-dRewriteRule ^(.*)$ index.php?furl=$1 [L,QSA]</IfModule>
Давайте разберем приведенный пример подробнее.
ifModule – как следует из названия, эта директива проверяет наличия модуля mod_rewrite.c на сервере, который в свою очередь обеспечивает работу директив преобразований.
Далее идёт RewriteEngine – это директива, которая позволяет управлять статусом модуля преобразований. Обычно он отключен, используя директиву RewriteEngine, мы можем его включить. Для этого в качестве значение указываем: on.
Следующий набор директив RewriteCond определяют условия, при которых происходят дальнейшие преобразования. В приведенном примере добавлено три исключения: не файл (!-f), не ссылка (!-l) и не директория (!-d), которые уже существуют без преобразования.
Другими словами, если на сайте есть файл filename.html и к нему идёт обращение, то будет открыт именно этот файл, а не передан запрос обработчику ЧПУ. Таким образом, мы решаем сразу ряд проблем.
Следует также отметить, что эти условия построены на обработке переменной REQUEST_FILENAME – запрашиваемого имени файла.
Последняя директива RewriteRule, определяет правила для механизма преобразований. В нашем случае, это фрагмент URL-адреса начинающийся после доменного имени и заканчивающийся символом вопрос (?), если таковой есть. Он будет передана php-скрипту index.php в качестве значения переменной furl.
Другими словами, php-обработчик получает только ЧПУ, не исключая возможности получения и динамических параметров, методом POST и/или GET.
Разбор регулярного выражения в RewriteRule
Сделаю небольшое отступление и разберу используемое в примере регулярное выражение: ^(.*)$.
- Символ галочки (^) обозначает начало строки запроса.
- Круглые скобки предназначены для выделения групп регулярных выражений и извлечения подстроки.
- Точка (.) означает не менее одного символа, за исключением символа перевода строки.
- Звездочка (*) означает любое количество символов в строке, предшествующих ей.
- Доллар ($) соответствует концу строки запроса.
Другими словами, мы извлекаем подстроку, состоящую из всех символов запроса, от начала и до конца.
Далее идет указание php-скрипта index.php от места расположения файла .htaccess. В качестве значения параметра furl здесь выступает первая (а в нашем случае и единственная) извлекаемая подстрока. Для этого в качестве значения указанна переменная регулярного выражения $1. Соответственно, если в регулярном выражении присутствует несколько извлекаемых подстрок, нужно указывать требуемый их номер очередности.
Отдельно хочу отметить, что регулярное выражение может быть и более сложным, но в нашем случае приведенного примера будет более чем достаточно.
Подведём итоги
В данной статье приведён рабочий пример, который позволяет передать PHP-обработчики фрагмент URL-адреса с целью динамического формирования нужного контента на запрос пользователя. Используемые в файле .htaccess директивы и регулярное выражение описаны в достаточной степени, чтобы решить поставленную задачу на осознанном уровне. На этом у меня всё. Спасибо за внимание. Удачи!
www.chuvyr.ru
Пишем ЧПУ и редиректы
Столкнулись с необходимостью написания ЧПУ в одном из проектов и делимся опытом по этому поводу.
Дано:
- Сервер под управление Apache;
- Скрипт, который выдает разный контент исходя из GET параметров;
- Ссылки вида http://site.com/?page=contacts нужно привести к http://site.com/contacts/;
- Необходимо прописать переадресацию со старых адресов на новые.
Все находится в файле .htaccess. Все подробно комментировано.
RewriteEngine On RewriteBase / # # Редиректы на url со слеш "/" на конце # http://www.site.com -> http://www.site.com/ # RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301] # # Редирект на url "без www" # http://www.site.com/ -> http://site.com/ # RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L] # # Пример редиректа с get параметрами от корня сайта # http://site.com/?id=10 -> http://site.com/contacts/ # RewriteCond %{REQUEST_URI} /$ RewriteCond %{QUERY_STRING} ^id=10$ RewriteRule ^.*$ http://site.com/contacts/? [L,R=301] # # Пример редиректа с get параметрами с вложенностью # http://site.com/app/?id=edit -> http://site.com/contacts/ # RewriteCond %{REQUEST_URI} app\.php$ RewriteCond %{QUERY_STRING} ^id=edit$ RewriteRule ^.*$ http://site.com/application/edit/? [L,R=301] # # ЧПУ # RewriteRule ^contacts/?$ ?page=contacts [L,QSA] RewriteRule ^news/?$ ?page=news [L,QSA] RewriteRule ^news/([^/]+)/?$ ?page=news&slug=$1 [L,QSA]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | RewriteEngine On RewriteBase /
# # Редиректы на url со слеш "/" на конце # http://www.site.com -> http://www.site.com/ #
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/ [L,R=301]
# # Редирект на url "без www" # http://www.site.com/ -> http://site.com/ #
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC] RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
# # Пример редиректа с get параметрами от корня сайта # http://site.com/?id=10 -> http://site.com/contacts/ #
RewriteCond %{REQUEST_URI} /$ RewriteCond %{QUERY_STRING} ^id=10$ RewriteRule ^.*$ http://site.com/contacts/? [L,R=301]
# # Пример редиректа с get параметрами с вложенностью # http://site.com/app/?id=edit -> http://site.com/contacts/ #
RewriteCond %{REQUEST_URI} app\.php$ RewriteCond %{QUERY_STRING} ^id=edit$ RewriteRule ^.*$ http://site.com/application/edit/? [L,R=301]
# # ЧПУ #
RewriteRule ^contacts/?$ ?page=contacts [L,QSA]
RewriteRule ^news/?$ ?page=news [L,QSA] RewriteRule ^news/([^/]+)/?$ ?page=news&slug=$1 [L,QSA] |
Статья про регулярные выражения уже была, подробно останавливаться на этом нет смысла.
ЧПУ
«Волшебство» преобразований происходит благодаря флагу QSA (query string append), указанному в квадратных скобках после каждого правила. Если строка запроса удовлетворяет правилу, то она является эквивалентом указанного адреса, и выдает тот же самый контент.
Например, RewriteRule ^news/?$ ?page=news [L,QSA] и обратиться к сайту по адресу /news/, то:
- Строка запроса /news/ совпадет с указанным в правиле, значит это правило сработает;
- Флаг L (last) указывает, что после этого правила другие применяться не будут;
- Флаг QSA указывает на подстановку строки запроса и её НЕ ЧПУ аналог;
- Строка запроса /news/ аналогична НЕ ЧПУ адресу ?page=news;
- По запросу /news/ выводится контент точно такой же, как и если набрать ?page=news.
После этого остается написать редиректы с 301 кодом (постоянный редирект), чтобы случайно не получить дубли страниц в поиске.
Редиректы
Переадресацию прописать можно несколькими способами.
# # Простой редирект # Redirect 301 /old.php http://site.com/new.php # # Редирект через RewriteRule # RewriteRule ^old /new/$1 [L,R=301] # # Редиректа с get параметрами # RewriteCond %{REQUEST_URI} old\.php$ RewriteCond %{QUERY_STRING} ^id=edit$ RewriteRule ^.*$ http://site.com/new/edit/? [L,R=301]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # # Простой редирект #
Redirect 301 /old.php http://site.com/new.php
# # Редирект через RewriteRule #
RewriteRule ^old /new/$1 [L,R=301]
# # Редиректа с get параметрами # RewriteCond %{REQUEST_URI} old\.php$ RewriteCond %{QUERY_STRING} ^id=edit$ RewriteRule ^.*$ http://site.com/new/edit/? [L,R=301] |
С первыми двумя все ясно. Старый адрес, потом новый. Если писать не Redirect, а RewriteRule, то нужно еще указать флаг R и код редиректа.
Третий вариант перенаправляет по новому адресу по различным GET-параметрам.
RewriteCond определяет условие сработает правило RewriteRule.
- REQUEST_URI — Адрес, по которому осуществляется запрос;
- QUERY_STRING — Строка с GET-параметрами.
Если оба этих условия совпадают, то срабатывает правило, по которому с указанного адреса посетителя сайта переадресуют на указанный новый.
Представленные примеры позволяют подготовить самописный сайт без ЧПУ к продвижению в поиске.
dmitriyilichev.com
Что такое wordpress чпу. Подробная настройка чпу wordpress. Продвижение сайтов
Всех приветствую! Недавно мы говорили о правильном продвижении веб сайтов и ваших статей, теперь мы поговорим о важной части SEO оптимизации о ЧПУ — человеко-понятные URL. Эту настройку нужно сделать сразу, после создания блога на wordpress, перед тем, как вы начнете писать статьи.
Пример правильных (с точки зрения SEO оптимизации) постоянных ссылок:
http://prokomputer.ru/polnaya-nastrojka-chpu-v-wordpress
Пример не правильных:
http://prokomputer.ru/?p=1202
Для того чтобы настроить ЧПУ идем по следующему пути вашего блога – консоль – Параметры — Постоянные ссылки и видим:
Нужно всего лишь поставить галочку и вписать символы как у меня
/%postname%/
Далее немного сложнее
1. Заходим по фтп в корень (верхний уровень) вашего блога. Как мы говорили самая лучшая программа для работы с фтп это FileZilla;
2. В меню FileZilla нажимаем сервер – принудительно отображать скрытые файлы. И среди всех файлов, мы должны найти файл .htaccess
Еще раз – вы должны находиться точно в корне блога, если среди всех прочих файлов есть wp-config.php, wp-content, то это и есть корень блога.
Если этот файл есть, копируем себе на компьютер, если нет, просто создаем у себя на компьютере.
3. Далее, файл .htaccess который Вы создали или скопировали, открываем для редактирования и вставляем этот код:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
4. Сохраняем файл и копируем на хост.
Вот и все, далее пишем статью и видим ЧПУ.
Если Вас интересует комплексное, качественное продвижение сайтов, обращайтесь только к профессионалам https://filandor.com/seo — веб студия филандор. Именно от фирмы продвигающей Ваш ресурс, зависят такие важные составляющие вашего бизнеса, как количество продаж, тематические посетители, выход в ТОП поисковиков.
На закуску у нас смешнейший ролик — «очки нннада» смотрим, смеемся)))))))))
[Всего голосов: 0 Средний: 0/5]prokomputer.ru
Как сделать ЧПУ с помощью .htaccess
Если Вы умеете немного кодить и пишите свои скрипты, я вам расскажу как легко сделать ЧПУ (человеко понятный урл) с помощью .htaccess.
Что такое ЧПУ?
Например, у нас есть ссылка на страницу новостей с ID номером новости:
http://site.ru/news.php?id=4
Чтобы сделать такой URL красивее и удобнее, придумали ЧПУ, т.е. представление адреса, например в таком виде:
http://site.ru/news/4/
Скажете не очень наглядно? А вот такой пример:
http://site.ru/index.php?do=article&name=kak-sdelat-chpu
а с ЧПУ:
http://site.ru/articles/kak-sdelat-chpu/
Сделать это очень просто. Для веб-серверов Apache, есть встроенный модуль mod_rewrite. На большинстве хостингов он есть, так же как и на денвере.
Создаем файл .htaccess и кладем его в корень сайта. Первой строкой в этом файле мы пишем:
RewriteEngine on
Эта строка включает модуль mod_rewrite. Далее, мы пишем сами условия куда и зачем обращаться. Для нашего первого примера, код будет выглядеть так:
RewriteEngine onRewriteRule ^news/([0-9]+)/? news.php?id=$1 [L]
Он будет перенаправлять с http://site.ru/news/4/ сюда http://site.ru/news.php?id=4Все эти условия обычно указываются в htaccess с помощью регулярных выражений.
По второму примеру, код будет выглядеть так:
RewriteEngine onRewriteRule ^articles/([-a-zA-Z0-9_]+)/? index.php?do=article&name=$1 [L]
Т.е. с адреса http://site.ru/articles/kak-sdelat-chpu/ нас перебросит на http://site.ru/index.php?do=article&name=kak-sdelat-chpu. Точнее пользователь не увидит реального адреса, а увидит только наш ЧПУ.
Как видите, все достаточно просто — создаем файл htaccess, пишем две строчки и готово!
По регулярным выражениям меня не спрашивайте, я не шарю Знаю только:
[0-9]+ — это только для цифр
[-a-zA-Z0-9_]+ — это для латинских больших, маленьких, дефиса и подчеркивания
Если во соображаете в регулярных выражениях, Вам будет очень легко написать любое правило. А кто не соображает, тут нужно смотреть примеры, которые я привел и пробовать. Я вчера попробовал, получилось! Не сразу конечно, перерыл кучу инфы, но разобрался.
Надеюсь понятно описал. Будут вопросы, спрашивайте.
UPD by Hugo: Если использовать конструкцию [QSA,L], тогда ЧПУ сможет принимать GET запросы. Т.е. если мы будем без [QSA,L] передавать GET-параметр (http://site.ru/articles/kak-sdelat-chpu/?Get_param=1) то выкинет 404 ошибку. Чтобы этого не происходило и мы смогли принимать GET запросы, нужно:
Вместо этого:
RewriteRule ^news/([0-9]+)/? news.php?id=$1 [L]
Нужно написать [QSA,L] на конце:
RewriteRule ^news/([0-9]+)/? news.php?id=$1 [QSA,L]
crazy-russian.ru
apache - ЧПУ и .htaccess
Скажу сразу, что я почти в этом не разбираюсь. Необходимо сделать ЧПУ. Урлы типа http://domein.com/model.php?id=(название латиницей) нужно перевести в урлы типа http://domein.com/model/(название латиницей). В файле .htaccess выглядит так полностью:
php_flag register_globals on ErrorDocument 404 /error.html RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{HTTP_HOST} ^domein.com RewriteRule (.*) http://www.domein.com /$1 [R=301,L] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http://domein.com / [R=301,L] RewriteRule ^ model/(.+)$ model.php?id =$1 [R]И вот если ставить ключ [R] в последней строке, то редирект выполняется, т.е. в поле адреса забиваешь http://domein.com/model/a страница находиться, но при этом урл меняется на прежний http://domein.com/model.php?id=a. И когда из http://domein.com/search.php идет обращение к http://domein.com/model.php?id=a, урл сам не меняется на http://domein.com/model/a, хоть ты тресни.
С ключами отличными от [R]: либо [L], либо [QSA], либо их комбинации или же совсем без ключа; страница http://domein.com/model/a находиться и урл фиксируется, так что пользователь может его видеть. НО как и в случае с [R], урл сам не меняется на http://domein.com/model/a. И самое страшное что не грузятся картинки и невозможно перейти на другие ветки сайта, даже если менять img src="images/img.jpg" на img src=" domein.com/images/img.jpg" в итоге картинка имеет путь http://domein.com/model/domein.com/images/img.jpg, также и все страницы имеют ссылки вида http://domein.com/model/index.php вместо http://domein.com/index.php при обращении из изменённого урла к index.php.
Наверно немного запутанно, но смысл думаю понятен. Задача сделать рабочими ЧПУ, так чтобы новые урлы формировались из уровня выше и при этом сохранялись в поле адреса. И чтобы нормально грузились все картинки и пути были соответственно рабочими.
Повторюсь, я профан в этом деле и делаю только первые шаги в познании PHP. Так чт
ru.stackoverflow.com