По умолчанию ссылки выглядят так: /w/index.php?title=article. Чтобы сделать их такими же, как в Википедии, есть полтора десятка способов.

У меня сработал такой:

В файл LocalSettings.php добавляем следующий код:

$wgScriptPath        = "/wiki";
$wgScript           = "$wgScriptPath/index.php";
$wgRedirectScript   = "$wgScriptPath/redirect.php";
$wgArticlePath      = "$wgScriptPath/$1";


В корневом каталоге сайта создаем файлик .htaccess со следующим содержимым:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.+)$ /wiki/index.php?title=$1 [L,QSA]

Понравился или оказался полезным этот пост?

Подпишитесь на обновления блога по RSS или читайте его в своей френдленте ЖЖ

Читайте также


8 комментариев на запись “Сайт на MediaWiki. Шаг 2. Облагораживаем ссылки”

  1. Вася пишет:

    Привет Админ!
    хороший материал, очень полезный. По крайней мере, слегка понял. Но, видимо, много тонкостей есть в разных версиях. Вот я поставил сейчас 1.15.
    Вроде бы ничего, разобрался. Но, твой пример с заменой длинных ссылок не прокатил.
    Попробовал наобум из английского мануала. Но явно не хватает знаний пхп-кодинга и знания английского.
    Хотя мне помог один чел сделать короткие ссылки, но, беда в том, что при редактировании уже имеющихся страниц, происходит полная путаница.
    В адресе страницы редактирования появляется лишнее значение (index.php).
    Чего делать, фиг знает. Может плюнуть на них на эти длинные ссылки?
    А может глянешь и поможешь?

  2. admin пишет:

    Вася, если помогу, то нескоро — пока слишком занят(

  3. admin пишет:

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

  4. Вася пишет:

    Спасибо.
    Ладно, думаю, что не судьба пока. Чеснслово, ковыряться в кодах не понимая сути, это реально фигня. Так что, ничего страшного думаю, если останутся длинные ссылки.

  5. Sancho пишет:

    Я вот по поводу того что у меня не показывается title=article

    У меня ссылка выглядит следующим образом

    мойсайт.ru/index.php5/Заглавная страница

    Как быть?

  6. admin пишет:

    Sancho, см.

    http://www.mediawiki.org/wiki/Manual:Short_URL/wiki.php/Page_title_—_No_root_No_htaccess

  7. Zeev пишет:

    Вот рабочий вариант для последней версии

    В файле LocalSettings.php:

    $wgArticlePath = «/wiki/$1»;

    $actions = array(‘edit’, ‘watch’, ‘unwatch’, ‘delete’,’revert’, ‘rollback’, ‘protect’,
    ‘unprotect’,’info’,’markpatrolled’,’validate’,’render’,’deletetrackback’,’print’,
    ‘dublincore’,’creativecommons’,’credits’,’submit’,’viewsource’,’history’,’raw’,
    ‘purge’);

    foreach ($actions as $a) {
    $wgActionPaths[$a] = «/action/$a/$1»;
    }

    Тут я изменил от изначального кода только строчку:
    $wgActionPaths[$a] = «/action/$a/$1»;
    в оригинале она выглядела:
    $wgActionPaths[$a] = «$wgScriptPath/action/$a/$1»;

    В файле .htaccess:

    php_flag register_globals off
    RewriteEngine on
    RewriteRule ^wiki/?(.*)$ ./index.php?title=$1 [L,QSA]
    RewriteRule ^action/([a-z]*)/(.*)$ ./index.php?action=$1&title=$2 [L,QSA]

    Тут ничего не менял.

    Ещё не проверял все функции с этим кодом, но редактирование и создание новой статьи работает как надо.

  8. rxs пишет:

    Сработал такой способ: дефолтные настройки, плюс
    $wgArticlePath = «/wiki/$1»; # Virtual path (left part of first rewrite rule). MUST be DIFFERENT from the path above!
    $wgUsePathInfo = true;

    и .htaccess
    RewriteEngine On
    RewriteRule ^wiki/(.*)$ /w/index.php?title=$1 [PT,L,QSA]
    RewriteRule ^wiki/*$ /w/index.php [L,QSA]
    RewriteRule ^/*$ /w/index.php [L,QSA]

    ps капча понравилась )

Оставить комментарий

Вы можете использовать теги <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>