Схемы URL в Composr

Автор Крис Грэм (ocProducts)
 Composr поддерживает короткие URL-адреса. Официально мы поддерживаем их только в Apache, но практически вы можете заставить их работать на любом веб-сервере.

Эти короткие URL-адреса имеют следующие преимущества:
  • Более интуитивно понятная структура URL.
  • Более профессиональные URL-адреса, без прямой ссылки на язык реализации веб-сайта.
  • Легче общаться устно или через такие сервисы, как Twitter.
  • Быстрее набирать.
  • Улучшение SEO (если честно, это спорно, но он очень популярен - особенность URL клички является более актуальной для SEO).
 Короткие URL-адреса включаются с помощью функции «Схема URL». На самом деле у нас есть несколько различных схем, из которых вы можете выбирать.

Схемы URL.

Composr использует "ссылки на страницы" для внутренней конфигурации вместо URL-адресов, потому что схема URL-адресов изменяет структуру URL-адресов. Схема URL-адреса определяет, как ссылка на страницу превращается в URL-адрес.
Доступные схемы URL-адресов:
  • Используйте / pg / для идентификации страниц CMS (например /pg/start).
  • Используйте .htm для идентификации страниц CMS (например /start.htm).
  • Очень простые неукрашенные URL (например, /start).
 «Использовать / pg / для идентификации страниц CMS» рекомендуется для начинающих пользователей, потому что это однозначно и просто в настройке.

 «Использовать .htm для идентификации страниц CMS» требует, чтобы .htaccess файл знал каждую зону Composr, чтобы он мог устранять неоднозначность запросов и, таким образом, направлять их в нужную зону.

 «Очень простые неукрашенные URL-адреса» - это здорово, но веб-мастеру, возможно, потребуется иметь большой опыт в администрировании веб-сервера, если у него есть другие программные пакеты, установленные в том же каталоге, что и Composr. Правила перенаправления для этого закомментированы в .htaccess файлах по умолчанию .

Пример: ссылка на ваш собственный профиль участника

 Часто владельцы сайтов хотят сделать ссылку на профиль текущего авторизованного пользователя. 
Поэтому мы будем использовать этот сценарий примера того, как URL будет выглядеть во всех различных схемах URL.

 Начнем со страницы-ссылки. Если вы не укажете id параметр на view экране members модуля, он автоматически будет использовать идентификатор текущего члена (или отображать экран входа в систему, если это гость).
Таким образом, ссылка на страницу следующая:
:members:view
Я предположил, что "Единая общественная зона" включена,site:members:view

http://yourbaseurl/index.php?page=members&type=view

Если схема URL-адреса - «Использовать / pg / для идентификации страниц CMS»:
http://yourbaseurl/pg/members/view

Если схема URL-адреса - «Использовать .htm для идентификации страниц CMS»:
http://yourbaseurl/members/view.htm

Если схема URL-адреса - «Очень простые неукрашенные URL-адреса»:
http://yourbaseurl/members/view

Для полноты картины давайте покажем, что они было бы, если бы он ссылался на участника № 3:
  • :members:view:3

  • http://yourbaseurl/index.php?page=members&type=view&id=3

  • http://yourbaseurl/pg/members/view/3

  • http://yourbaseurl/members/view/3.htm

  • http://yourbaseurl/members/view/3

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

Инструкции по установке. 

Composr также может создавать схемы URL на следующих веб-серверах:
  • Apache (использование mod_rewrite и наши правила recommended.htaccess - подробности ниже.
  • Litespeed Server (как и выше, Litespeed имитирует Apache).
  • IIS7 (по правилам в наших web.config).
  • IIS6 и ниже, если установлено расширение IIRF (подробности ниже).
  • Facebook HHVM (встроен в наши комплектные файлы конфигурации).

Apache

Выполните следующие шаги:
  1. Если у вас еще нет работающего .htaccess файла Composr (быстрый установщик мог сделать это за вас автоматически), переименуйте его recommended.htaccess в .htaccessЕсли после этого на вашем сайте появляются ошибки, попробуйте plain.htaccess.
  2. Если что-то пойдет не так, вы можете отключить схемы URL-адресов с помощью параметра аварийного отключения в http://yourbaseurl/config_editor.php сценарии. Убедитесь, что вы видите, где он находится, прежде чем переходить к следующему шагу.
  3. Включите схему URL-адресов в параметрах вашего сайта (Зона администратора> Настройка> Конфигурация> Параметры сайта> Поисковая оптимизация и добавление тегов).

Если это не спасет:

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

 Хороший инструмент ручной отладки - это пойти http://yourbaseurl/sitemap.htm и посмотреть, что произойдет. Если он не загружается, .htaccess отладьте свои настройки и / или настройки сервера, затем попробуйте еще раз изменить конфигурацию Composr, как указано выше.

Отладка:

 В этом разделе рассматривается случай, когда правила перезаписи не работают на уровне сервера. например, загрузка http://yourbaseurl/sitemap.htm не удалась.

Ряд вещей может мешать работе правил, определенных в .htaccess.

Хороший первый шаг - добавить немного тарабарщины в самый верх .htaccess, например gdfgdfgdfgdЕсли добавление этого не останавливает загрузку страниц Composr, значит, .htaccess файл вообще не читается. Обычно это происходит из-за того, что Apache не AllowOverride настроил путь, по которому вы работаете. Это потребует разрешения на основном уровне конфигурации Apache. В качестве альтернативы вы можете сделать какую-то глупую ошибку, например, пропустить точку в начале имени файла, или случайно добавить .txt в конец, или сделать это в неправильном каталоге - так что еще раз проверьте свои базовые предположения.

Если вы все же получили ошибку (500 Internal Server Error), то удалите тарабарщину. Попробуйте удалить <IfModule mod_rewrite.c> линию и </IfModule> линию дальше вниз.
Если после этого вы снова получите внутреннюю ошибку сервера 500, значит, mod_rewrite модуль не настроен в Apache. Это нужно будет решить на основном уровне конфигурации Apache.

Если вы все еще застряли (то есть вы определили .htaccess, что читается и mod_rewrite настроено), но правила перезаписи по-прежнему не работают, это немного загадка. Возможно, вам потребуется поговорить с разработчиком или экспертом по Apache.
 

IIS6 и ниже

 Вы должны быть администратором сервера, чтобы установить бесплатный модуль IIRF ISAPI, доступный по адресу : Ionics Isapi Rewrite Filter - Home.
 Разработчики не могут брать на себя ответственность или обеспечивать поддержку этой функции. Мы рады ответить на вопросы, но возиться с вашим веб-сервером могут только те, кто в курсе. Лучше всего попробовать что-то на тестовом веб-сайте перед тем, как начать работу.

Чтобы установить IIRF:
  1. Скопируйте IIRF.dll в свою Inetpub папку.
  2. В диспетчере IIS добавьте dll в качестве фильтра ISAPI, но только на веб-сайт, на котором работает Composr. Это означает, что плагин IIRF будет влиять только на веб-сайт Composr, что важно, поскольку файл конфигурации IIRF не является модульным - если бы он был применен ко всем веб-сайтам на сервере, это могло бы вызвать серьезные проблемы.
  3. Создайте IirfGlobal.ini в своей Inetpub папке файл, содержащий следующее:
Code
# Anything that would point to a real file should actually be allowed to do so. If you have a "RewriteBase /subdir" command, you may need to change to "%{DOCUMENT_ROOT}/subdir/$1".
RewriteCond %{DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -l [OR]
RewriteCond %{DOCUMENT_ROOT}/$1 -d
RewriteRule (.*) - [L]

# Redirect away from modules called directly by URL. Helpful as it allows you to "run" a module file in a debugger and still see it running.
RewriteRule ^([^=]*)pages/(modules|modules_custom)/([^/]*)\.php$ $1index.php\?page=$3 [L,R,QSA]

# PG STYLE: These have a specially reduced form (no need to make it too explicit that these are Wiki+). We shouldn't shorten them too much, or the actual zone or base URL might conflict
RewriteRule ^([^=]*)pg/s/([^\&\?]*)/index\.php$ $1index.php\?page=wiki&id=$2 [L,QSA]

# PG STYLE: These are standard patterns
RewriteRule ^([^=]*)pg/([^/\&\?]*)/([^/\&\?]*)/([^\&\?]*)/index\.php(.*)$ $1index.php\?page=$2&type=$3&id=$4$5 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)/([^/\&\?]*)/index\.php(.*)$ $1index.php\?page=$2&type=$3$4 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)/index\.php(.*)$ $1index.php\?page=$2$3 [L,QSA]
RewriteRule ^([^=]*)pg/index\.php(.*)$ $1index.php\?page=$2 [L,QSA]

# PG STYLE: Now the same as the above sets, but without any additional parameters (and thus no index.php)
RewriteRule ^([^=]*)pg/s/([^\&\?]*)$ $1index.php\?page=wiki&id=$2 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)/([^/\&\?]*)/([^\&\?]*)/$ $1index.php\?page=$2&type=$3&id=$4 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)/([^/\&\?]*)/([^\&\?]*)$ $1index.php\?page=$2&type=$3&id=$4 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)/([^/\&\?]*)$ $1index.php\?page=$2&type=$3 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?]*)$ $1index.php\?page=$2 [L,QSA]

# PG STYLE: And these for those nasty situations where index.php was missing and we couldn't do anything about it (usually due to keep_session creeping into a semi-cached URL)
RewriteRule ^([^=]*)pg/s/([^\&\?\.]*)&(.*)$ $1index.php\?$3&page=wiki&id=$2 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?\.]*)/([^/\&\?\.]*)/([^/\&\?\.]*)&(.*)$ $1index.php\?$5&page=$2&type=$3&id=$4 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?\.]*)/([^/\&\?\.]*)&(.*)$ $1index.php\?$4&page=$2&type=$3 [L,QSA]
RewriteRule ^([^=]*)pg/([^/\&\?\.]*)&(.*)$ $1index.php\?$3&page=$2 [L,QSA]

# HTM STYLE: These have a specially reduced form (no need to make it too explicit that these are Wiki+). We shouldn't shorten them too much, or the actual zone or base URL might conflict
RewriteRule ^(site|forum|adminzone|cms|collaboration)/s/([^\&\?]*)\.htm$ $1/index.php\?page=wiki&id=$2 [L,QSA]
RewriteRule ^s/([^\&\?]*)\.htm$ index\.php\?page=wiki&id=$1 [L,QSA]

# HTM STYLE: These are standard patterns
RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)/([^/\&\?]*)/([^\&\?]*)\.htm$ $1/index.php\?page=$2&type=$3&id=$4 [L,QSA]
RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)/([^/\&\?]*)\.htm$ $1/index.php\?page=$2&type=$3 [L,QSA]
RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)\.htm$ $1/index.php\?page=$2 [L,QSA]
RewriteRule ^([^/\&\?]+)/([^/\&\?]*)/([^\&\?]*)\.htm$ index.php\?page=$1&type=$2&id=$3 [L,QSA]
RewriteRule ^([^/\&\?]+)/([^/\&\?]*)\.htm$ index.php\?page=$1&type=$2 [L,QSA]
RewriteRule ^([^/\&\?]+)\.htm$ index.php\?page=$1 [L,QSA]

# SIMPLE STYLE: These have a specially reduced form (no need to make it too explicit that these are Wiki+). We shouldn't shorten them too much, or the actual zone or base URL might conflict
#RewriteRule ^(site|forum|adminzone|cms|collaboration)/s/([^\&\?]*)$ $1/index.php\?page=wiki&id=$2 [L,QSA]
#RewriteRule ^s/([^\&\?]*)$ index\.php\?page=wiki&id=$1 [L,QSA]

# SIMPLE STYLE: These are standard patterns
#RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)/([^/\&\?]*)/([^\&\?]*)$ $1/index.php\?page=$2&type=$3&id=$4 [L,QSA]
#RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)/([^/\&\?]*)$ $1/index.php\?page=$2&type=$3 [L,QSA]
#RewriteRule ^(site|forum|adminzone|cms|collaboration)/([^/\&\?]+)$ $1/index.php\?page=$2 [L,QSA]
#RewriteRule ^([^/\&\?]+)/([^/\&\?]*)/([^\&\?]*)$ index.php\?page=$1&type=$2&id=$3 [L,QSA]
#RewriteRule ^([^/\&\?]+)/([^/\&\?]*)$ index.php\?page=$1&type=$2 [L,QSA]
#RewriteRule ^([^/\&\?]+)$ index.php\?page=$1 [L,QSA]


































































 

Сбросить IIS

  1. Проверьте короткий URL-адрес (например http://yourbaseurl/site/pg/downloads) - если он не загружается, у вас проблема с конфигурацией IIRF / IIS.
  2. Если что-то пойдет не так, вы можете отключить схемы URL-адресов с помощью параметра аварийного отключения в http://yourbaseurl/config_editor.php сценарии. Убедитесь, что вы видите, где он находится, прежде чем переходить к следующему шагу.

Включение схемы URL-адресов задним числом.

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

Концепции.

Схема URL

  • Способ сделать URL-адреса проще, чем URL-адреса PHP по умолчанию/

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