Схемы URL в Composr

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


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

Короткие URL-адреса включаются с помощью функции «Схема URL». На самом деле у нас есть несколько различных схем, из которых вы можете выбирать.
 

Содержание

  1. Учебное пособие по Composr: схемы URL в Composr
    1. Схемы URL
      1. Пример: ссылка на ваш собственный профиль участника
    2. Инструкции по установке
      1. Apache
        1. Если это не спасет
        2. Отладка
      2. IIS6 и ниже
    3. Включение схемы URL-адресов задним числом
    4. Смотрите также

Схемы 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).
Поэтому мы будем использовать этот сценарий примера того, как 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папке файл, содержащий следующее:

    Код

    # 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]
  4. Сбросить IIS
  5. Проверьте короткий URL-адрес (например http://yourbaseurl/site/pg/downloads) - если он не загружается, у вас проблема с конфигурацией IIRF / IIS.
  6. Если что-то пойдет не так, вы можете отключить схемы URL-адресов с помощью параметра аварийного отключения в http://yourbaseurl/config_editor.phpсценарии. Убедитесь, что вы видите, где он находится, прежде чем переходить к следующему шагу.

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

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

Концепции

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

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