Настройка чпу выберите верные высказывания


Администратор. Базовый. Основы администрирования. Помогите!! Всю неделю голову ломаю! Помогите, подскажите где ошибка! . Не хватает двух ответов до 100% 1.Технология «Автокеширования» : автоматически обновляет кеш компонентов при изменении данных позволяет ускорить загрузку страниц путем обращения к кешу без подключения PHP +позволяет компонентам с включенным режимом автокеширования создать кеши и полностью перейти в режим работы без запросов к базе данных 2.Форма «Проверка системы» служит для: +проверки сервера на соответствие техническим требованием продукта проверки целостности файлов системы проверки работоспособности сайта 3.Управление правами доступа к разделу возможно: +с помощью кнопки «Свойства папки» как в рамках логической, так и в рамках физической структуры сайта с помощью команды "Права на доступ продукта" контекстного меню папки как в рамках логической, так и в рамках физической структуры сайта +с помощью команды "Прав.


какого-либо сайта определяется: на странице настроек соответствующего сайта +в форме редактирования языка, используемого в административном разделе и в форме "Региональные настройки" в форме редактирования языка, используемого в административном разделе на странице настроек «Главного модуля» в форме "Региональные настройки" 6.Рейтинги рассчитываются: автоматически, раз в сутки в зависимости от настроек модуля +можно пересчитать вручную +автоматически, каждый час 7.Условия применения того или иного шаблона дизайна определяются: +в форме создания/редактирования сайта в форме редактирования параметров корневого каталога сайта на странице настроек «Главного модуля» на странице настроек модуля «Управление структурой» 8.Можно ли указать начальное значение авторитета для пользователей? нет +можно указать начальное значение для всех новых пользователей сразу, а также и для отдельных пользователей да, но только для новых пользователей при.

у пользователя был следующий набор кнопок на панели управления: для папки — «Полный доступ» +для папки — «Запись» , а для файла — «Чтение» для папки и файла — «Чтение» для папки — «Чтение» , а для файла — «Запись» для папки и файла — «Запись» 12.Чтобы установить в системе новый язык, нужно: создать запись для данного языка на странице «Языки» +создать запись языка на странице «Языки» , загрузить языковые файлы для данного языка через систему обновлений на странице настроек «Главного модуля» перечислить через запятую идентификаторы используемых в системе языков, выполнить загрузку языковых файлов для данных языков через систему обновлений 3 года 13.При удалении сайта нужно учитывать что: +необходимо снять привязку (или удалить) со всех сущностей системы, относящихся к данному сайту. зависимости сущностей игнорируются системой при удалении.

#43;зависимости сущностей могут быть сложными. сущности сами удаляют свои зависимости. 14,Управление правами доступа пользователей осуществляется: с помощью настройки параметров сайта +с помощью настройки прав групп, к которым относятся пользователи (в форме настройки параметров группы) отдельно для каждого пользователя (в форме редактирования учетной записи пользователя) 15,Все возможности страницы «Резервное копирование» : создать архив публичной части текущего сайта и базы данных +создать архив публичной части текущего сайта, ядра продукта и базы данных создать архив ядра продукта и базы данных 16.Формат представления валюты в публичном разделе сайта зависит от: параметров показа валюты, заданных на странице настроек «Главного модуля» параметров отображения валюты, заданных в форме настройки сайта + параметров валюты, заданных для языка, используемого на сайте настроек модуля «Валюты» 17.Установка решения производится: с помощью скрипта установки или кнопки «Протестировать новое решение» на панели инструментов на странице «Модули» или с помощью кнопки «Протестировать новое решение» на панели инструментов +с помощью мастера на странице «Список мастеров» или кнопки «Протестировать новое решение» на панели инструментов 18.Настройка прав доступа к папкам и файлам осуществляется: в разделе «Контент» +в Менеджере файлов, раздел «Файлы и папки» в настройках модуля «Управление структурой» Дополнен 3 года назад .

истеме приписка пользователя к группе сохранится, однако пользователь с данным бюджетом станет неактивным пользователь будет удален из системы 21.Типы свойств страниц, используемые для всех страниц сайта, задаются: на странице редактирования параметров сайта на странице настроек «Главного модуля» +на странице настроек модуля «Управление структурой» 22.В общем случае для создания нового сайта в рамках системы необходимо ввести название и адрес сайта в поля «Название сайта» и «URL сайта» на странице настроек «Главного модуля» зарегистрировать лицензию на новый сайт через «Систему обновлений» +создать новую запись на странице «Список сайтов» 23.Для импорта пользователей из CSV-файла минимально необходимое условие, это: указание логина и пароля пользователя +указание имени и фамилии пользователя указание имени, фамилии и почтового адреса пользователя 24.Ограничение списка компонентов, доступных пользователям производится непосредственно в самом редакторе нев.

ичном разделе сайта определяется: +в форме создания/редактирования Региональных настроек и отдельно для каждого сайта в форме создания/редактирования сайта в форме создания/редактирования Региональных настроек в форме редактирования параметров корневого каталога сайта на странице настроек модуля «Управление структурой» 27.В HTML-редакторе разместить произвольный php-скрипт можно, для этого необходимо перейти в режим редактирования исходного кода и написать требуемый код нельзя + можно, используя визуальный компонент «Произвольный php-скрипт» или в режиме редактирования исходного кода написать требуемый код 28.Чтобы шаблон дизайна применялся только к страницам определенного раздела, на странице настроек сайта для данного шаблона следует задать условие типа: Параметр в URL Для групп пользователей +Для папки или файла Выражение PHP 29.Настройка ЧПУ. Выберите верные высказывания: Небольшое число универсальных правил эффективнее чем большее количество простых единообразных правил в силу дополнительной нагрузки на PHP.

ортировка правил по CONDITION не происходит при ручном добавлении правила в файл urlrewrite.php и при добавлении компонента через визуальный редактор. +Система применяет в первую очередь частные правила, а потом — общие. Составление "CONDITION" для кириллицы аналогично составлению "CONDITION" для латиницы. Дополнен 3 года назад 30.Пользователь может настроить каждую форму списков в административной части, причем администратор может задать свои настройки для каждого пользователя в отдельности +система сохранит произведенные настройки для конкретного пользователя и настраиваемый список для этого пользователя будет открываться каждый раз в заданном виде +только ту форму, у которой на контекстной панели расположена кнопка «Настроить» Поле «Условие» , доступное при редактировании меню в расширенном режиме, используется для: управления внешним видом меню +задания условия отображения пункта меню 31.Какими правами будет обладать пользователь, относящийся к двум группам со следующими правами? •Первой группе пользователей разрешено редактирование всех страниц сайта, кроме страниц закрытого раздела (доступ к данному разделу запрещен) ; •Второй группе пользователей предоставлено право на просмотр всех страниц сайта. правом на просмотр всех страниц сайта +правом на просмотр страниц закрытого раздела и просмотра и редактирования остальных страниц сайта правом на редакти.

hone/23.php подключалась страница /catalog/index.php?ID=23&BID_CODE=phone a d +c b Дополнен 3 года назад Буду очень благодарен! Дополнен 3 года назад

touch.otvet.mail.ru

Зачем нужна настройка URL ссылок в удобные для восприятия человеком ЧПУ?

На этом сайте уже была затронута мысль об  именование страниц в удобные для восприятия человеком. И это неспроста, так как сегодня большинство динамических сайтов имеют в своих URL адресах параметры, с помощью которых показывается, та информация, которая необходима пользователю сайта. Cледующий пример демонстрирует, что значение параметра id в URL адресе указывает скрипту сайта вывести статью номер два:

	http://www.softmaker.kz.php?id=2  

К сожалению такие URL адреса не просто запомнить. Попробуйте сказать такой адрес, например по телефону. Поисковые системы, как и пользователи вашего сайта вряд ли получат информацию о содержании страницы вашего сайта из такого веб-адреса. Пользователь не сможет понять, что он найдет статью c примерами программирования в PHP. Более привлекательные URL адреса являются установленными по умолчанию во многих CMS (Content Management System — система управления содержимым). Например, такой адрес:


	http://www.softmaker.kz/id/2  

Конечно, такой адрес URL вносит больше ясности и он короче. Поэтому его легче запомнить и намного
легче прочесть, но по нему не скажешь точно, куда он ведёт. Но можно использовать другой вариант:

	http://www.softmaker.kz/PHP/PHP-Examples/  

Теперь, используя этот URL пользователь сможет понять, что он сможет прочитать и найти на странице. Поисковик тоже может разбить этот URL адрес на слова, чтобы лучше определить содержание страницы. (дефис «-» в URL адресе воспринимается поисковой системой, как пробел, а знак подчёркивания «_», как символ). Согласитесь, такой URL адрес легче запомнить и передать другому человеку.

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

ЧПУ адреса на сайте — какие инструменты необходимы?


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

Сервер Apache простая система, в которой есть ваозможность настройки ЧПУ ссылок (URL) в удобные для восприятия человеком. Обычно он поставляется со встроенным модулем для настройки ЧПУ адресов, mod_rewrite.

Сервер Майкрософт IIS, не имеет встроенной системы для настройки ЧПУ адресов, но имеет дополнение, которое поддерживает эту возможность. ISAPI_Rewrite очень похожа по функциональность с mod_rewrite.

Код, который мы будем рассматривать, основан на настройке ЧПУ ссылок в mod_rewrite сервера Apache.

Основные сведения о настройке ЧПУ ссылок на PHP сайте

Для начала рассмотрим простой пример. На сайте есть php-файл, который открывает одну страницу. Его URL адрес такой:

	http://www.softmaker.kz/article_CSS_example.php/  

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

	http://www.softmaker.kz/article-CSS/  

Чтобы так получилось нужно указать серверу сделать внутреннее перенаправление всех запросов с адреса «article-CSS» на адрес «article_CSS_example.php». Нужно, чтобы такое перенаправление было внутренним, так как ни к чему, чтобы в адресной строке браузера что-то менялось.


Но для начала, необходимо создать текстовый документ с наименованием «.htaccess», который будет содержать правила настройки ЧПУ ссылок (URL) в удобные для восприятия человеком. Файл должен быть названн именно так «.htaccess» с точкой вначале названия, но не «.htaccess.php» или «php.htaccess». Файл «.htaccess» нужно положить в корневую папку вашего сервера, такую же, где лежит файл из нашего примера article_CSS_example.php. Но если файл «.htaccess» уже лежит в корневой папке, то лучше его начать редактировать, чем перезаписать новым.

Файл .htaccess является конфигурационным файлом для сервера. Если в нём допущена ошибка, тогда сервер вернёт сообщение об ошибке. Обычно это ошибка с кодом 500. Если передавать файл .htaccess на сервер, используя FTP, то нужно помнить, что он передается в режиме ASCII, а не в бинарном режиме (BINARY). В файле .htaccess мы будем выполнять два правила. Первое — включение режима RewriteEngine, второе — указание серверу Apache, какое именно правило ему нужно выполнить.

	RewriteEngine On # Включение режима  	RewriteRule ^article-CSS/?$ article_CSS_example.php [NC,L]  	# Управление запросами для «article-CSS»  

Также нужно знать, что всё что находится за символом «#» является комментарием, т.е сервер пропускает мимо всё, что находится за этим символом. Комментариями нужно пользоваться свободно, чтобы потом можно было быстро вспомнить, как это правило работает и для чего его вообще написали. Также в каждом файле «.htaccess» должна быть только одна строчка с включением режима «RewriteEngine».

Поговорим немного об инструкции «RewriteBase». С помощью нее мы преобразуем URL сервера к физическому пути. Если URL вашего сервера не соответствуют физическим путям к файлам, вы должны использовать «RewriteBase» в каждом из «.htaccess» файлов, где вы хотите использовать директивы «RewriteRule».

Предположим, что файл «.htaccess» лежит в /physical/path/.htaccess. Помните: /physical/path это физический путь. Также у вашего сервера настроен алиас:

	Alias /virtual /physical/path  

Тогда даем вашему серверу знать, что мы работаем через /virtual, а не через префикс физического пути /physical/path. В файле «.htaccess» пишем:

	RewriteEngine On  	RewriteBase /virtual  

После этого правила преобразований будут работать следующим образом:

	RewriteRule ^article.php$ post.php  

В примере выше, запрос к /virtual/article.php корректно преобразуется в физический файл /physical/path/post.php.

А теперь давайте подробнее рассмотрим, как работает инструкция «RewriteRule»:

  • RewriteRule — указывает серверу Apache о начале одного правила.
  • ^/article-CSS/?$ — Это шаблон. Сервер проверяет URL адреса каждого запроса и сравнивает с шаблоном. Если адрес совпадает, то сервер Apache меняет URL адрес запроса на то что находиться в следующем параметре.
  • article_CSS_example.php — Параметр замены. Если шаблон совпадает с запросом, сервер Apache использует этот URL адрес вместо адреса запроса.
  • [NC,L] — Это флаги, которые указывают серверу Apache как применять правило. Сейчас мы используем два флага. Флаг «NC» указывают серверу Apache, что правило не зависит от регистра символов (в адресе запроса могут быть, как прописные, так и строчные буквы). Флаг «L» указывают серверу Apache, что нужно остановить процесс преобразования.
  • # Управление запросами для «article-CSS» — Комментарий объясняет, что делает правило (рекомендуется использовать).

Это правило является простым способом настройки преобразования одного URL адреса в другой. Оно является основой для многих правил преобразования ЧПУ ссылок (URL) в удобные для восприятия человеком.

Шаблоны и параметры замены для преобразования в ЧПУ ссылки

Пример, который мы рассмотрели выше позволяет перенаправлять запросы для одного URL адреса. Но мощь режима mod_rewrite заключается в том, что он позволяет преобразовывать целые группы запросов URL адресов сверяя их с шаблоном, который записан в правиле. Предположим, что нужно изменить все URL адреса сайта. Возьмем пример из первой части статьи. У нас имеется URL адрес сайта:

	http://www.softmaker.kz.php?id=2  

И мы хотим преобразовать его к следующему виду:

	http://www.softmaker.kz/id/2  

Чтобы не писать правило для каждой статьи id необходимо написать правило, чтобы управлять всеми cтатьями. Поэтому нужно изменить правило к следующему виду:

	http://www.softmaker.kz.php?id={номер}  

Нужно изменить этот URL адрес так:

	http://www.softmaker.kz/id/{номер}/  

Чтобы сделать это нужно использовать регулярные выражения. Они являются шаблонами (паттернами, от англ. pattern), определёнными в формате, который сервер может понимать. Вот обычный паттерн, который определяет число:

	[0-9]+  

Квадратные скобки содержат в себе определенный диапазон сиволов и «0-9» указывает на все числа. Симвлол плюс «+» указывает, что в шаблоне может быть одно или более чисел, стоящих перед знаком «+». Этот шаблон подходит для нашей задачи по поиску числовых категорий в URL адресе PHP сайта. Шаблон этого правила рассматривается как регулярное выражение по умолчанию, поэтому нет надобности где-либо указывать, что он включен или активирован.

	RewriteRule ^id/([0-9]+)/?$ articles.php?id=$1 [NC,L]  	# Управление запросом по категориям  

Первое, что можно отметить, так это шаблон взятый в круглые скобки. Он позволяет нам получить обратную ссылку для параметра замены. Выражение «$1» в параметре замены указывает серверу Apache брать из URL адреса всё то, что в скобках шаблона. Можно задать множество обратных ссылок и они будут пронумерованы в порядке появления в шаблоне. Итак, это правило означает, что сервер Apache переправит все запросы для
softmaker.kz/id/{номер}/ на articles.php?id={тот же номер}.

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

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

Очень важной гранью является, использование диапазонов в шаблонах. Часто в шаблонах ставят выражения с использованием всех символов, чем указывают определённый символьный диапазон. Но, если всё же сравнивается диапазон, то нужно экранировать символ, который мы хотим обозначить как литерал (буквенный символ) с помощью обратного слэша, так мы укажем серверу Apache рассматривать следующий символ, как литерал.

Следующий пример правила не просто сравнивает URL ссылки «rss.xml», как таковой, а также происхдит сравнение «rss1xml», «rss-xml» и так далее.

	RewriteRule ^rss.xml$ rss.php [NC,L] # Изменение URL ссылки фида  

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

	RewriteRule ^rss.xml$ rss.php [NC,L]  	# Изменение URL ссылки фида  

Экранирование применимо только для шаблонов и в параметрах замены не используется. Остальные символы, которые следует экранировать, называются метасимволами:

  • . (любой символ, кроме перевода строки (по умолчанию))
  • * (квантификатор, означающий ноль или более вхождений)
  • + (квантификатор, означающий одно или более вхождений)
  • {} (начало и конец количественного квантификатора)
  • ? (расширяет смысл метасимвола, является также квантификатором, означающим отсутствие либо ровно 1 вхождение, также преобразует жадные квантификаторы в ленивые)
  • ! (в начале строки означает отрицание шаблона)
  • ^ (начало строки или отрицание, если находится в начале диапазона)
  • $ (конец строки)
  • [] (сравнивает любое содержание, начало и конец описания символьного класса)
  • — (диапазон, если используется между квадратными скобками)
  • () (начало и конец группы, группа обратной ссылки)
  • | (альтернативный выбор, или)
  • (экранирующий символ)

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

	http://www.softmaker.kz/PHP-Examples/  

И мы хотим указать серверу заменить этот URL адрес, но по всем статьям в категории PHP:

	http://www.softmaker.kz.php?id=PHP-Examples  

Сделать это можно с помощью следующего правила:

	RewriteRule ^PHP/([A-Za-z0-9-]+)/?$ articles.php?id=$1 [NC,L]  	# Обработка статей  

В этом правиле каждый URL адрес будет перенаправлен, если начинается с «PHP», с одного или более (+) разных символов: литералов, чисел и дефисов ([A-Za-z0-9-]) (заметьте, что дефис в конце выбора символов находится внутри квадратных скобок, но он будет определен, как литерал (буквенный символ), но не как разделитель диапазона). И указываем ссылку на категорию в скобках, как «$1» в параметре замены. Теперь сделаем правило общее для всех статей, независимо от категории, то есть, если в адресе будет указана папка отличная от «PHP», скрипт будет работать:

RewriteRule ^[A-Za-z-]+/([A-Za-z0-9-]+)/?$ articles.php?id=$1 [NC,L]  # Обработка всех статей  

Итак, мы заменили «PHP» с помощью шаблона, в котором сравниваются символы и дефисы. Но сейчас сравнение происходит не только с папкой «PHP», но и с другими папками, которые соответствуют шаблону сравнения по символам и дефисам.

Флаги в правилах замены ссылок на ЧПУ

Флаги, которые добавляются в конец правил настройки ссылок ЧПУ указывают серверу Apache, как нужно понимать правило и управлять им. Правила могут быть использованы, чтобы указать серверу Apache, например, использовать ли правило независимо от регистра символов (в адресе запроса могут быть, как прописные, так и строчные буквы). Также можно указать Apache остановить текущее сравнение и так далее. Ниже приведён список флагов, которые используются в правилах:

  • C (связывать текущее правило со следующим)
  • CO=cookie (устанавливать cookie)
  • E=var:value (установить переменную окружения «var» по значению «value»)
  • F (запрещает URL — отсылая в загловок код 403)
  • G (страница больше не существует)
  • L (последнее правило, остановить процесс преобразований)
  • N (следующее правило — переход на первое правило)
  • NC (правило независимо от регистра символов, могут быть, как прописные, так и строчные буквы)
  • NE (не экранировать URL адрес при выводе)
  • NS (пропускать правило, если это подзапрос)
  • P (вызывает прокси, пропускает параметр замены через прокси модуль)
  • PT (используется, когда URL проходит через дополнительный обработчик, например, mod_alias)
  • R (временно перемещенная страница — отсылает в заголовок HTTP код 302, по умолчанию)
  • R=301 (навсегда перемещён на новый URL адрес)
  • QSA (добавляет строку параметров запроса к адресу URL параметра замены)
  • S=x (пропускает следующее x количество правил)
  • T=mime-type (принудительно устанавливает тип mime)

Перенаправление содержания страницы на новый URL адрес

RewriteRule ^article/?$ http://www.novyi-domen.kz/article/ [R,NC,L]  # Временно перемещённая страница  

С помощью флага «R» мы изменяем работу дерективы RewriteRule. Вместо внутреннего изменения URL, сервер Apache возвращает в HTTP заголовок сообщение о том, что страница перемещена временно на новый URL адрес, указанный в параметре замены, независимо от того какая была указана URL ссылка, обсолютная или относительная. Заголовок отсыдается обратно включая код 302, который указывает на временное перемещение контента страницы.

RewriteRule ^article/?$ http://www.novyi-domen.kz/article/ [R=301,NC,L]  # Навсегда перемещён на новый URL адрес  

Если нужно переместить навсегда, то к флагу «R» добавляем строку «=301», тогда сервер Апаче отправит заголовок, указывающий на постоянное перемещение данного контента. В отличие от значения по умолчанию флага «R», «R=301» укажет браузеру показать новую URL ссылку в адресной строке. Перенаправление контента является самым распространённым способом настройки URL адресов.

Условия для правил перенаправлвения с простого URL на ЧПУ

В правилах настройки ЧПУ может быть установлено одно или несколько условий и они будут исполняться последовательно. Это позволяет добавить только определённые правила для подмножества запросов. Условия позволяют разнобразить использование правил настройки ЧПУ, например, можно использовать правила настройки к поддоменам или алтьтернативным доменам, а не только к URL адресам. Вот пример:

	RewriteCond %{HTTP_HOST} ^softmaker.kz [NC]  	RewriteRule ^(.*)$ http://www.softmaker.kz/$1 [L,R=301]  

Это правило перенаправляет все запросы на тот же самый URL адрес вида «www.softmaker.kz». Без этого правила произошло бы зацикливание, потому что каждый запрос постоянно соответствовал бы правилу и отправлялся бы сам на себя. Это правило служит для перенаправления запросов с URL адресами без «www», а условие, стоящее перед правилом выполняет эту задачу.

Условия обрабатываются так же, как и правила. Правило начинаетсч с дерективы «RewriteCond» и указывает модулю mod_rewrite, что строка является правилом. Первым параметром является то, что должно проверятся, вторым параметром является шаблон с которым происходит сравнение. В конце, в квадратных скобках указываются флаги, как и в дерективе «RewriteRule». Первым параметром могут быть разные значения, например проверка домена, какой используется браузер, IP адрес и так далее. В подзаголовке Использование серверных переменных в правилах настройки ЧПУ можно увидеть все варианты, с которыми производится сравнение.

Шаблон в дерективе «RewriteCond» почти всегда используется так же, как и в дерективе «RewriteRule» только в некоторых случаях по-другому. Первый параметр не является шаблоном, если начинается со специального символа, описанного в подзаголовке Исключения и дополнения в услвиях правил настройки ЧПУ. Значит, если нужно использовать регулярные выражения в шаблоне, который начинается с символов «<», «>» или дефиса, то необходимо экранировать их обратным слэшем.

Условия настройки URL адресов в ЧПУ могут, как и правила, содержать в себе флаги, но только два: «NC» и «OR». Флаг «NC», как и в правилах, указывает серверу Apache, что правило не зависит от регистра символов (в адресе запроса могут быть, как прописные, так и строчные буквы). Флаг «OR» используется, когда нужно указать, что несколько условий выполняются для одного правила. По умолчанию, без флага «OR», должны совпасть все условия, тогда правило будет выполнено. С флагом «OR», достаточно выполнения одного из них.

	RewriteCond %{HTTP_HOST} ^m.softmaker.kz [OR]  	RewriteCond %{HTTP_HOST} ^en.softmaker.kz [OR]  	RewriteCond %{HTTP_HOST} ^kz.softmaker.kz  	RewriteRule ^(.*)$ http://www.softmaker.kz/$1 [L,R=301]  	# Правило выполниться, если совпадёт хотя бы одно условие  

Исключения и дополнения в услвиях правил настройки ЧПУ

Условия в правилах настройки ЧПУ обычно сравниваются по шаблону регулярных выражений. Но можно ещё использовать другие способы задания условий с помощью следующих дополнений:

  • «!Шаблон» (проверяемая строка несоответствует шаблону)
  • «<Шаблон» (проверяемая строка лексически меньше шаблона)
  • «>Шаблон» (проверяемая строка лексически больше шаблона)
  • «=Шаблон» (проверяемая строка равна шаблону)
  • «-d» (является ли проверяемая строка каталогом)
  • «-f» (является ли проверяемая строка файлом)
  • «-s» (является ли проверяемая строка по размеру больше нуля)
  • «-l» (является ли проверяемая строка символической ссылкой)
  • «-F» (является ли проверяемая строка файлом, проверка через подзапрос)
  • «-U» (является ли проверяемая строка URL, проверка через подзапрос)

Использование серверных переменных в правилах настройки ЧПУ

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

	%{ИМЯ_ПЕРЕМЕННОЙ}  

В условиях правил настройки «ИМЯ_ПЕРЕМЕННОЙ» заменяется на следующие значения:

  • Заголовки HTTP
    • HTTP_USER_AGENT
    • HTTP_REFERER
    • HTTP_COOKIE
    • HTTP_FORWARDED
    • HTTP_HOST
    • HTTP_PROXY_CONNECTION
    • HTTP_ACCEPT
  • Переменные соединения
    • REMOTE_ADDR
    • REMOTE_HOST
    • REMOTE_USER
    • REMOTE_IDENT
    • REQUEST_METHOD
    • SCRIPT_FILENAME
    • PATH_INFO
    • QUERY_STRING
    • AUTH_TYPE
  • Внутренние переменные сервера
    • DOCUMENT_ROOT
    • SERVER_ADMIN
    • SERVER_NAME
    • SERVER_ADDR
    • SERVER_PORT
    • SERVER_PROTOCOL
    • SERVER_SOFTWARE
  • Переменные даты и времени
    • TIME_YEAR
    • TIME_MON
    • TIME_DAY
    • TIME_HOUR
    • TIME_MIN
    • TIME_SEC
    • TIME_WDAY
    • TIME
  • Специальные переменные
    • API_VERSION
    • THE_REQUEST
    • REQUEST_URI
    • REQUEST_FILENAME
    • IS_SUBREQ

Настройка ЧПУ ссылок с использованием нескольких правил

Чем сложнее структура сайта, тем сложнее нужно настраивать правила для этого сайта. Особенно трудно разрешать противоречия между правилами. Часто возникают противоречия, когда добавляется новое правило в файл .htaccess. В таком случае можно заметить, что новое правило само по себе рабочее и правило, добавленное ранее в файл соответствует URL адресу, но этот URL адрес противоречит новому правилу.

	RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$  	files.php?cat_name=$1&file_title=$2 [NC,L]  	# Обработка закачки блога  	RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$  	articles.php?cat_name=$1&article_title=$2 [NC,L]  	# Обработка статьи блога  

В этом примере страница закачки и страница статьи имеют одинаковые шаблоны. Второе правило никогда не совпадёт с URL адресом, так как всё, что должна быть проверено этим правилом будет перехвачено первым. Есть несколько способов обойти это противоречие. В некоторых CMS легко (включая, wordpress) справляются с этой ситуацией, дополнительно добавляя к каждому запросу свою строку:

	RewriteRule ^files/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$  	files.php?cat_name=$1&file_title=$2 [NC,L]  	# Обработка закачки блога  	RewriteRule ^articles/([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$  	articles.php?cat_name=$1&file_title=$2 [NC,L]  	# Обработка статьи блога  

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

	RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-]+)/?$  	files_or_articles.php?cat_name=$1&blog_name=$2 [NC,L]  	# Обработка запроса по закачке и по статье блога  

Во многих случаях можно составить наиболее точные правила обработки запросов, распределяя их в правильном порядке следования. Представим, что на блоге есть правило обработки статей и ещё одно правило обработки страниц статей раздела (на страницу выводится по десять статей текущего раздела, как на этой странице каталога статей).

	# Обработка статьи блога  	RewriteRule ^articles/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html$  	articles.php?cat_name=$1&file_name=$2 [NC,L]  	# Обработка страниц статей в разделе  	RewriteRule ^articles/([0-9]+)/$ articles.php?page=$1 [NC,L]  

Как видно из этих правил второй параметр обоих шаблонов (выделен полужирным шрифтом) совпадают по обработке чисел. Эти правила находятся в противоречии друг с другом. Сейчас правило обработки статей будет перехватывать все ссылки, даже те, которые относятся ко второму. Перенаправление будет неверным.

Чтобы разрешить это противоречие нужно поставить правила в правильном порядке следования. Первым поставим правило, которое обрабатывает страницы статей в разделе (номер страницы, числовой тип, длиной в две, максимум в три цифры). Тогда возникнет только один конфликт правил, когда название статьи будет состоять из четырёх цифр.

	# Обработка страниц статей в разделе  	RewriteRule ^articles/([0-9]+)/$ articles.php?page=$1 [NC,L]  	# Обработка статьи блога  	RewriteRule ^articles/([A-Za-z0-9-]+)/([A-Za-z0-9-]+).html$  	articles.php?cat_name=$1&file_name=$2 [NC,L]  

site.softmaker.kz

Вопросы

  1. Настройка прав доступа к папкам и файлам осуществляется:
  2. Рейтинги рассчитываются:
  3. Управление правами доступа к разделу возможно:
  4. Поле «Условие», доступное при редактировании меню в расширенном режиме, используется для:
  5. Управление правами доступа пользователей осуществляется:
  6. Форма «Проверка системы» служит для:
  7. Если пользователь приписан к какой-либо группе на ограниченный период времени, то по окончании указанного периода:
  8. Ограничение списка компонентов, доступных пользователям производится
  9. Какие нужно установить права на файл/папку, чтобы у пользователя был следующий набор кнопок на панели управления:
  10. В системе имеются две обязательные группы:
  11. В общем случае для создания нового сайта в рамках системы необходимо
  12. Для импорта пользователей из CSV-файла минимально необходимое условие, это:
  13. Восстановление базы данных осуществляется на странице:
  14. Редактирование каких уровней доступа возможно в «1С-Битрикс: Управление сайтом»?
  15. Технология «Автокеширования»:
  16. Формат отображения даты и времени создания элементов какого-либо сайта определяется:
  17. Типы свойств страниц, используемые для всех страниц сайта, задаются:
  18. Чтобы шаблон дизайна применялся только к страницам определенного раздела, на странице настроек сайта для данного шаблона следует задать условие типа:
  19. Кодировка, с использованием которой выполняется отображение сообщений на кнопках в публичном разделе сайта, задается:
    • в форме Региональных настроек языка, на котором показываются сообщения
  20. Пользователь может настроить каждую форму списков в административной части, причем
  21. Чтобы динамический контент был виден из публичной части всем пользователям, для группы «Все пользователи (в том числе неавторизованные)», задать права «чтение» необходимо:
  22. Условия применения того или иного шаблона дизайна определяются:
  23. Какими параметрами определяется представление сайта в публичном разделе?
  24. При удалении сайта нужно учитывать что:
  25. Добавление новых пользователей в систему возможно:
  26. В HTML-редакторе разместить произвольный php-скрипт
  27. Какой формат используется при создании резервной копии сайта?
  28. Какое правило необходимо задать? Какое правило необходимо задать в файле urlrewrite.php системы UrlRewrite для того, чтобы при запросе адреса типа /catalog/phone/23.php подключалась страница /catalog/index.php?ID=23&BID_CODE=phone
  29. Формат представления валюты в публичном разделе сайта зависит от:
  30. Права на доступ пользователей задаются
  31. Можно ли указать начальное значение авторитета для пользователей?
  32. Установка решения производится:
  33. Чтобы установить в системе новый язык, нужно:
  34. Системные настройки работы визуального редактора производятся:
  35. Набор кнопок, отображаемых пользователю на панели управления, ограничивается администратором с помощью:
  36. Какими правами будет обладать пользователь, относящийся к двум группам со следующими правами?
    	  Первой группе пользователей разрешено редактирование всех страниц сайта, кроме страниц закрытого раздела (доступ к данному разделу запрещен);  Второй группе пользователей предоставлено право на просмотр всех страниц сайта.
  37. Все возможности страницы «Создание резервной копии»:
  38. Настройка ЧПУ. Выберите верные высказывания:
  39. Формат показа даты и времени в публичном разделе сайта определяется:

cloudurl.ru

Нет, не работало по другой причине, в компоненте в поле:

ID элемента: усиленно пытался ввести:

={$_REQUEST["code"]}

Хотя ниже есть специальное прекрасное поле: Код элемента:

Перенес значение туда и все стало ок (вот что значит заниматься ЧПУ несколько часов, в первые, поле не видел и не осознавал).

В процессе настроек я пошел дальше, кроме подключения ЧПУ к детальному описанию, например тут уже работает:

http://www.vremyaigr.ru/catalog/buy/pc_game/Darkness_2_PC/

Я решил настроит ЧПУ и в компоненте:

bitrix:catalog.section

Вот временная страничка для экспериментов:

http://www.vremyaigr.ru/catalog/buy/pc_game/

Как бы все сработало и отображается и вроде и переходы работают с нее и на нее, но возникают казусы которые все портят.

Например вы перешли на эту страничку как залогиненый пользователь сайта, а потом решили разлогинится, в УРЛЕ после этого появляется следующий текст:

http://www.vremyaigr.ru/catalog/buy/pc_game/index.php?SECTION_CODE=pc_game&x=3&y=6&code=index

Который выводит ошибку: Элемент не найден.

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

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

http://www.vremyaigr.ru/bitrix/urlrewrite.php?SEF_APPLICATION_CUR_PAGE_URL=%2Fcatalog%2Fbuy%2Fpc_game%2Findex.php

Но с тем же результатом: Элемент не найден.

Что самое интересное, таких проблем не возникает на странице с детальным описанием товара, то есть можно разлогиневаться, логинется, обновляться и т.д. все ок, появляются всякие дополнения в виде значений в конце, например ?clear_cache=Y и тому подобное, но все работает.

А вот на странице списка каталогов не в какую, поэтому пока не вывожу в работу данную часть.

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

Условие: #^/catalog/buy/([wd]+)(\?(.*))?#
Файл: /mgn/list_.php
Правило: SECTION_CODE=$1

Что вы думаете по поводу этой проблемы, в чем может она быть.

По поводу опасения человека с вложенностями в каталоге, то же нет не каких проблем пока, у нас каталог сделан условно:

Товар с цифровой доставкой
— игры
— программы
— антивирусы
— операционные системы
— Карты оплаты
— ПСН
— Лайв

Расставили везде текстовые идентификаторы в каталоге и все ок, бегает по всему каталогу, либо пока не столкнулись со сложностями и опасениями предположенными выше.

ОтветитьУдалить

matraska23.blogspot.com

Решил написать эту заметку, потому как надоело отвечать 100500 раз одно и то же на ВиО.

Многие начинающие веб-программисты рано или поздно сталкиваются с задачей внедрения в свой сайт человеко-понятных линков (ЧПУ). До внедрения ЧПУ все ссылки имеют вид /myscript.php или даже /myfolder/myfolder2/myscript3.php, что тяжело для запоминания и ещё хуже для SEO. После внедрения ЧПУ линки принимают вид /statiya-o-php или даже на кириллице /статья-о-пхп.

Кстати о SEO. Человекопонятные линки на САМОМ деле придумали не для удобного запоминания, а в основном для повышения индексируемости сайта, потому что совпадение поискового запроса и части URL даёт хорошее преимущество в рейтинге поиска.

Эволюция начинающего PHP-программиста может быть выражена следующей последовательностью шагов:

  1. Размещение plain-PHP кода в отдельных файлах и доступ к этим файлам через линки вида /myfolder/myscript.php
  2. Понимание, что все скрипты имеют значительную часть общего (например, создание подключения к БД, чтение конфигурации, запуск сессии и проч.) и как следствие создание общей начальной точки «входа», некоторого скрипта, который принимает ВСЕ запросы, а потом выбирает — какой внутренний скрипт подключить. Обычно этот скрипт имеет имя index.php и лежит в корне, вследствие чего все запросы (они же URLы) выглядят так: /index.php?com=myaction&com2=mysubaction
  3. Необходимость внедрения роутера и переход к человекопонятным линкам.

Замечу, что между пунктами 2 и 3 большинство программистов делают очевидную ошибку. Я не ошибусь, если назову это значением около 95% программистов. Даже большинство известных фреймворков содержат эту ошибку. И заключается она в следующем.

Вместо того, чтобы реализовывать принципиально новый способ обработки линков, ошибочно делается концепция «заплаток и редиректов» на базе .htaccess, которая заключается в том, чтобы с помощью mod_rewrite создавать множество правил редиректа. Эти строки сравнивают URL с каким-либо регулярным выражением и при совпадении расталкивают выуженные из URL значения по GET-переменным, в дальнейшем вызывая всё тот же index.php.

  #Неправильный метод ЧПУ    RewriteEngine On  RewriteRule ^/users/(.+)$ index.php?module=users&id=$1 [QSA]    #....Ещё куча подобных правил...  

У данной концепции множество недостатков. Один из них — трудность создания правил, большой процент человеческих ошибок при добавлении правил, которые сложно выявить, но они приводят к ошибке сервера 500.

Другой недостаток в том, что часто правится по сути конфига сервера, что само по себе нонсенс. И если в Apache конфиг можно «пропатчить» с помощью .htaccess, то в популярном nginx такой возможности нет, там всё находится в общем файле конфигурации в системной зоне.

И ещё один недостаток, вероятно, наиболее важный, что при таком подходе невозможно динамически конфигурировать роутер, то есть «на лету», алгоритмически менять и расширять правила выбора нужного скрипта.

Предлагаемый ниже способ избавлен от всех этих недостатков. Он уже используется в большом количестве современных фреймворков.

Суть заключается в том, что начальный запрос всегда хранится в переменной $_SERVER[‘REQUEST_URI’], то есть его можно считать внутри index.php и разобрать как строку средствами PHP со всеми обработками ошибок, динамическими редиректами и проч и проч.

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

  RewriteEngine On  RewriteCond %{REQUEST_FILENAME} !-f     #Если файл не существует  RewriteCond %{REQUEST_FILENAME} !-d    #И если папка не существует  RewriteRule ^.*$ index.php [QSA,L]  

Причём это правило можно разместить как в .htaccess, так и в основном файле конфигурации Apache.

Для nginx соответствующее правило будет выглядеть вот так:

  location / {   if (!-e $request_filename) {   rewrite ^/(.*)$ /index.php last;   }  }  

Всё просто.

Теперь рассмотрим кусок кода PHP в index.php, который анализирует ссылки и принимает решение — какой скрипт запускать.

В общем случае ссылка из $_SERVER[‘REQUEST_URI’] выглядит так

/часть1/часть2/часть3

Первое, что приходит в голову — разбить её с помощью explode(‘/’, $uri) и сделать сложный роутер на основе switch/case, анализирующий каждый кусок запроса. Не делайте этого! Это сложно и в итоге приводит код в ужасный непонимабельный и неконфигурабельный вид!

Я предлагаю более лаконичный способ. Лучше не описывать словами, а сразу показать код.

  <?php    /**   * Sitemap (можно перенести в отдельный файл)   */  $GLOBALS['sitemap'] = array (   '_404' => 'page404.php',   // Страница 404</span>   '/' => 'mainpage.php',   // Главная страница   '/news' => 'newspage.php',   // Новости - страница без параметров   '/stories(/[0-9]+)?' => 'storypage.php',  // С числовым параметром   // Больше правил  );    // Код роутера  class uSitemap {   public $title = '';   public $params = null;   public $classname = '';   public $data = null;     public $request_uri = '';   public $url_info = array();     public $found = false;     function __construct() {   $this->mapClassName();   }     function mapClassName() {     $this->classname = '';   $this->title = '';   $this->params = null;     $map = &$GLOBALS['sitemap'];   $this->request_uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);   $this->url_info = parse_url($this->request_uri);   $uri = urldecode($this->url_info['path']);   $data = false;   foreach ($map as $term => $dd) {   $match = array();   $i = preg_match('@^'.$term.'$@Uu', $uri, $match);   if ($i > 0) {   // Get class name and main title part   $m = explode(',', $dd);   $data = array(   'classname' => isset($m[0])?strtolower(trim($m[0])):'',   'title' => isset($m[1])?trim($m[1]):'',   'params' => $match,   );   break;   }   }   if ($data === false) {   // 404   if (isset($map['_404'])) {   // Default 404 page   $dd = $map['_404'];   $m = explode(',', $dd);   $this->classname = strtolower(trim($m[0]));   $this->title = trim($m[1]);   $this->params = array();   }   $this->found = false;   } else {   // Found!   $this->classname = $data['classname'];   $this->title = $data['title'];   $this->params = $data['params'];   $this->found = true;   }   return $this->classname;   }  }  $sm = new uSitemap();  $routed_file = $sm->classname; // Получаем имя файла для подключения через require()  require('app/'.$routed_file); // Подключаем файл    // P.S. Внутри подключённого файла Вы можете использовать параметры запроса,  // которые хранятся в свойстве $sm->params    

Несмотря на то, что код довольно длинный, он прост логически. Мне не хочется его объяснять, я считаю любой код на PHP самообъясняющим, если он правильно написан. Учитесь читать код.

epsiloncool.ru

Что такое ЧПУ

ЧПУ, или человеко-понятный урл, это адрес веб-страницы, который удобен для восприятия человеком. Система ЧПУ предлагает способ записи адреса, который логично описывает структуру сайта и пути по нему. Для большей наглядности, приведу в пример две ссылки на один и тот же пост:

  • https://oriolo.ru/wordpress/nastroyka-chpu-wordpress/
  • https://oriolo.ru/?p=1651

Первая ссылка использует ЧПУ, а вторая – нет, но обе они ведут на одну и ту же страницу блога.

Использование постоянных ссылок имеет неоспоримые преимущества:

  • ЧПУ-ссылка позволяет заранее предположить о содержимом страницы, на которую она ведет
  • такую ссылку легко запомнить и продиктовать
  • польза для SEO продвижения – ЧПУ может содержать ключевые слова
  • ЧПУ позволяет ориентироваться среди разделов и рубрик сайта

Какой шаблон ЧПУ выбрать

Сейчас на большинстве блогов используется один из следуюших шаблонов постоянных сслылок:

Шаблон с датой и названием публикации

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

Шаблон: /%year%/%monthnum%/%postname%/
Пример: https://oriolo.ru/2012/11/sample-post/

Шаблон с рубрикой и названием поста

Такой шаблон позволяет пользователю удалив последнюю часть URL перейти на страницу всех записей в рубрике. Я использую именно такой шаблон на этом блоге.

Шаблон: /%category%/%postname%/
Пример: https://oriolo.ru/wordpress/sample-post/

Обратите внимание, что по-умолчанию в вордпресс путь к странице категории пишется с префиксом category. Так, например, путь к рубрике “Работа с WordPress” на моем блоге будет выглядеть так: https://oriolo.ru/category/wordpress, а путь к записи в этой рубрике – https://oriolo.ru/wordpress/sample-post/. То есть, набрав в адресной строке просто https://oriolo.ru/wordpress/, без префикса, посетитель попадет на страницу с ошибкой 404.

Поэтому, если вы хотите использовать этот шаблон, то для удобства посетителей можно удалить префикс category со страниц рубрик. Сделать это можно с помощью плагина WP No Category Base или следующего кода, который надо вставить в конце файла functions.php:

Этот код поможет удалить category из пути в адресе wordpress. Но он будет работать, только если используется шаблон /%category%/%postname%/ и префикс рубрик не установлен.

Шаблон с названием записи

Этот шаблон удобен тем, что отсутствует привязка поста к рубрике или дате. Поэтому, такой шаблон позволяет легко менять структуру сайта, перемещая посты из одной рубрики в другую: при этом адрес страницы будет оставаться неизменным. Поэтому, блог с такой структурой постоянных ссылок проще оптимизировать для поисковых систем. А также те, этот шаблон будет полезен, если вы планируете продавать ссылки со своего блога – все посты становятся страницами второго уровня, цена ссылки с них возрастает.

Шаблон: /%postname%/
Пример: https://oriolo.ru/sample-post/

В принципе, для блога можно выбрать любой из этих шаблонов, но лично я отдаю предпочтение второму и третьему.

oriolo.ru


You May Also Like

About the Author: admind

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.