Как сделать ЧПУ с помощью .htaccess. Htaccess wordpress чпу


Настройка ЧПУ (человеко-понятный url). Плагин Rus-To-Lat для Wordpress

чпу4 Всем привет!

В последние время новые статьи на сайте публикуются не так часто, как хотелось бы, но я обещаю исправиться:)

После того как вы установили WordPress первым что нужно сделать это настроить ЧПУ (человеко-понятный url ) .

Установка ЧПУ нужна для того что бы адрес ваших страниц был понятен человеку. Изначально ссылка WordPress выглядит так: http://test.ru/?p=1 (это адрес на статью «Привет-Мир», которая уже есть у вас ) как не крути это не совсем правильно и красиво. Но после, настройки, ваши ссылки будут выглядеть так: http://test.ru/privet-mit.php.Согласитесь так намного красивей. И такие УРЛ лучше воспринимаются поисковыми системами.

Как настроить ЧПУ на WordPress

Заходим в админку блога, открываем Настройки – Постоянные ссылки (ЧПУ).

чпу

Я, предлагаю поставить галочку над пунктом «Произвольная структура » и туда вписать код.

/%category%/%postname%.php — в адрес включает категорию и название поста.

Или

/%postname%.html — здесь только название поста.

Выглядит примерно так:

чпу2

После проделанного обязательно нажимаем «сохранить изменения».

                         Установка плагина RusToLat

Плагин RusTulat — с помощью которого происходит транслитерация русских букв на латинские и формируется человеко подобные урлы.

Устанавливаем плагин и активируем в админке.

Если вы занялись настройкой ЧПУ для вордпресс не сразу (уже написаны некоторые статьи), то у WordPress бывает глюк — названия статей и рубрик могут не транслитерироваться. В этом случае нужно открыть каждую статью и рубрику для редактирования и сохранить, ничего не изменяя. Вторая проблема, связанная с тем, что вы не сразу занялись настройкой урлов в том, что некоторые ссылки продолжают вести на старые адреса страниц, в результате мы видим ошибку 404. Чтобы это исправить, нужно установить плагин Permalink Redirect, которые пропишет 301-редирект со старых страниц на новые.

ЧПУ и .htaccess

Когда вы изменяете структуру ЧПУ WordPress возможно сам создаст файл .htaccess. Но бывает такое, что из-за настроек хостинга WordPress не может создать файл.Тогда нужно сделать это самому.

Создаем файл.htaccess и кладем в корневой каталог  вашего блога. В файл .htaccess нужно поместить код который предлагает WordPress.

чпу3

Ну и все,теперь вы сделали основные настройки блога.

Возникнут проблемы отвечу в комментариях!

pro-wordpress.ru

PHP: создание ЧПУ в .htaccess

Основной проблемой любого динамического сайта является отсутствие читабельного URL-адреса. В тоже время, читабельный URL-адрес это подсказка о содержащемся на веб-странице контенте. Таким образом, возникает необходимость создать полноценный ЧПУ. Решением может служить использования модуля преобразований на стороне веб-сервера. В данной статье я хочу помочь Вам решить задачи по созданию ЧПУ и настройке преобразований в файле .htaccess с целью дальнейшей обработки запросов пользователей в 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

Пишем ЧПУ и редиректы

Столкнулись с необходимостью написания ЧПУ в одном из проектов и делимся опытом по этому поводу.

Дано:

Все находится в файле .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/, то:

  1. Строка запроса /news/ совпадет с указанным в правиле, значит это правило сработает;
  2. Флаг L (last) указывает, что после этого правила другие применяться не будут;
  3. Флаг QSA указывает на подстановку строки запроса и её НЕ ЧПУ аналог;
  4. Строка запроса /news/ аналогична НЕ ЧПУ адресу ?page=news;
  5. По запросу /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.

Если оба этих условия совпадают, то срабатывает правило, по которому с указанного адреса посетителя сайта переадресуют на указанный новый.

Представленные примеры позволяют подготовить самописный сайт без ЧПУ к продвижению в поиске.

dmitriyilichev.com

Что такое wordpress чпу. Подробная настройка чпу wordpress. Продвижение сайтов

Всех приветствую! Недавно мы говорили о правильном продвижении веб сайтов и ваших статей, теперь мы поговорим о важной части SEO оптимизации о ЧПУ — человеко-понятные URL. Эту настройку нужно сделать сразу, после создания блога на wordpress, перед тем, как вы начнете писать статьи.

Пример правильных (с точки зрения SEO оптимизации) постоянных ссылок:

 http://prokomputer.ru/polnaya-nastrojka-chpu-v-wordpress

Пример не правильных:

http://prokomputer.ru/?p=1202

Для того чтобы настроить ЧПУ идем по следующему пути вашего блога – консоль – Параметры — Постоянные ссылки и видим:

ЧПУ в wordpress

Нужно всего лишь поставить галочку и вписать символы как у меня

/%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


Смотрите также

Prostoy-Site | Все права защищены © 2018 | Карта сайта