CINXE.COM
ru:rewrite [DokuWiki]
<!DOCTYPE html> <html lang="ru" dir="ltr" class="no-js"> <head> <meta charset="utf-8" /> <title>ru:rewrite [DokuWiki]</title> <meta name="generator" content="DokuWiki"/> <meta name="theme-color" content="#008800"/> <meta name="robots" content="index,follow"/> <meta name="keywords" content="ru,rewrite"/> <link rel="search" type="application/opensearchdescription+xml" href="/lib/exe/opensearch.php" title="DokuWiki"/> <link rel="start" href="/"/> <link rel="contents" href="/ru:rewrite?do=index" title="Все страницы"/> <link rel="manifest" href="/lib/exe/manifest.php"/> <link rel="alternate" type="application/rss+xml" title="Недавние изменения" href="/feed.php"/> <link rel="alternate" type="application/rss+xml" title="Текущее пространство имён" href="/feed.php?mode=list&ns=ru"/> <link rel="edit" title="Править страницу" href="/ru:rewrite?do=edit"/> <link rel="alternate" type="text/html" title="Простой HTML" href="/_export/xhtml/ru:rewrite"/> <link rel="alternate" type="text/plain" title="вики-разметка" href="/_export/raw/ru:rewrite"/> <link rel="canonical" href="https://www.dokuwiki.org/ru:rewrite"/> <link rel="stylesheet" href="/lib/exe/css.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e"/> <link rel="alternate" hreflang="en" href="https://www.dokuwiki.org/rewrite"/> <link rel="alternate" hreflang="de" href="https://www.dokuwiki.org/de:rewrite"/> <link rel="alternate" hreflang="fr" href="https://www.dokuwiki.org/fr:rewrite"/> <link rel="alternate" hreflang="ja" href="https://www.dokuwiki.org/ja:rewrite"/> <link rel="alternate" hreflang="ko" href="https://www.dokuwiki.org/ko:rewrite"/> <link rel="alternate" hreflang="pl" href="https://www.dokuwiki.org/pl:rewrite"/> <link rel="alternate" hreflang="zh" href="https://www.dokuwiki.org/zh:rewrite"/> <link rel="alternate" hreflang="x-default" href="https://www.dokuwiki.org/rewrite"/> <script >var NS='ru';var JSINFO = {"plugins":{"edittable":{"default columnwidth":""}},"id":"ru:rewrite","namespace":"ru","ACT":"show","useHeadingNavigation":0,"useHeadingContent":0};(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);</script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.4/jquery.min.js" defer="defer"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js" defer="defer"></script> <script src="/lib/exe/js.php?t=dokuwiki&tseed=f1005bad3d81fc9c803c7f93d32a390e&lang=ru" defer="defer"></script> <meta name="viewport" content="width=device-width,initial-scale=1" /> <link rel="shortcut icon" href="/lib/tpl/dokuwiki/images/favicon.ico" /> <link rel="apple-touch-icon" href="/lib/tpl/dokuwiki/images/apple-touch-icon.png" /> <meta name="verify-v1" content="OVxl3gsCv2MhZqh1cBQyl0JytWXSwXMjyvwc+4w3WtA=" /> <meta name="google-site-verification" content="YhTVK69hW94ZXUtc2zSLPxTkZKbZIn0zK67mz5WQB-E" /> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-83791-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-83791-1', { 'anonymize_ip': true }); </script> </head> <body> <div id="dokuwiki__site"><div id="dokuwiki__top" class="site dokuwiki mode_show tpl_dokuwiki showSidebar hasSidebar"> <!-- ********** HEADER ********** --> <header id="dokuwiki__header"><div class="pad group"> <div class="headings group"> <ul class="a11y skip"> <li><a href="#dokuwiki__content">Перейти к содержанию</a></li> </ul> <h1 class="logo"><a href="/start" accesskey="h" title="Домой [h]"><img src="/lib/tpl/dokuwiki/images/logo.png" width="64" height="64" alt="" /><span>DokuWiki</span></a></h1> <p class="claim">It's better when it's simple</p> </div> <div class="tools group"> <!-- USER TOOLS --> <div id="dokuwiki__usertools"> <h3 class="a11y">Инструменты пользователя</h3> <ul> <li class="action login"><a href="/ru:rewrite?do=login&sectok=" title="Войти" rel="nofollow"><span>Войти</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10 17.25V14H3v-4h7V6.75L15.25 12 10 17.25M8 2h9a2 2 0 0 1 2 2v16a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2v-4h2v4h9V4H8v4H6V4a2 2 0 0 1 2-2z"/></svg></a></li> </ul> </div> <!-- SITE TOOLS --> <div id="dokuwiki__sitetools"> <h3 class="a11y">Инструменты сайта</h3> <form action="/start" method="get" role="search" class="search doku_form" id="dw__search" accept-charset="utf-8"><input type="hidden" name="do" value="search" /><input type="hidden" name="id" value="ru:rewrite" /><div class="no"><input name="q" type="text" class="edit" title="[F]" accesskey="f" placeholder="Найти" autocomplete="on" id="qsearch__in" value="" /><button value="1" type="submit" title="Найти">Найти</button><div id="qsearch__out" class="ajax_qsearch JSpopup"></div></div></form> <div class="mobileTools"> <form action="/doku.php" method="get" accept-charset="utf-8"><div class="no"><input type="hidden" name="id" value="ru:rewrite" /><select name="do" class="edit quickselect" title="Инструменты"><option value="">Инструменты</option><optgroup label="Инструменты страницы"><option value="edit">Править страницу</option><option value="revisions">История страницы</option><option value="backlink">Ссылки сюда</option></optgroup><optgroup label="Инструменты сайта"><option value="recent">Недавние изменения</option><option value="media">Управление медиафайлами</option><option value="index">Все страницы</option></optgroup><optgroup label="Инструменты пользователя"><option value="login">Войти</option></optgroup></select><button type="submit">></button></div></form> </div> <ul> <li class="action recent"><a href="/ru:rewrite?do=recent" title="Недавние изменения [r]" rel="nofollow" accesskey="r">Недавние изменения</a></li><li class="action media"><a href="/ru:rewrite?do=media&ns=ru" title="Управление медиафайлами" rel="nofollow">Управление медиафайлами</a></li><li class="action index"><a href="/ru:rewrite?do=index" title="Все страницы [x]" rel="nofollow" accesskey="x">Все страницы</a></li> </ul> </div> </div> <!-- BREADCRUMBS --> <div class="breadcrumbs"> <div class="trace"><span class="bchead">Вы посетили:</span> <span class="bcsep">•</span> <span class="curid"><bdi><a href="/ru:rewrite" class="breadcrumbs" title="ru:rewrite">rewrite</a></bdi></span></div> </div> <hr class="a11y" /> </div></header><!-- /header --> <div class="wrapper group"> <!-- ********** ASIDE ********** --> <nav id="dokuwiki__aside" aria-label="Боковая панель"><div class="pad aside include group"> <h3 class="toggle">Боковая панель</h3> <div class="content"><div class="group"> <div class="plugin_translation is-dropdown"><span class="title">Перевод этой страницы<sup><a href="/localization" class="wikilink1" title="localization" data-wiki-id="localization">?</a></sup>: </span><ul><li class="a"><a class="wikilink1" title="English" href="/rewrite">English (en)</a></li><li class="a"><a class="wikilink2" title="|العربية" href="/ar:rewrite">|العربية (ar)</a></li><li class="a"><a class="wikilink2" title="Català" href="/ca:rewrite">Català (ca)</a></li><li class="a"><a class="wikilink2" title="Česky" href="/cs:rewrite">Česky (cs)</a></li><li class="a"><a class="wikilink2" title="Dansk" href="/da:rewrite">Dansk (da)</a></li><li class="a"><a class="wikilink1" title="Deutsch" href="/de:rewrite">Deutsch (de)</a></li><li class="a"><a class="wikilink2" title="Ελληνικά" href="/el:rewrite">Ελληνικά (el)</a></li><li class="a"><a class="wikilink2" title="Esperanto" href="/eo:rewrite">Esperanto (eo)</a></li><li class="a"><a class="wikilink2" title="Español" href="/es:rewrite">Español (es)</a></li><li class="a"><a class="wikilink2" title="فارسی" href="/fa:rewrite">فارسی (fa)</a></li><li class="a"><a class="wikilink1" title="Français" href="/fr:rewrite">Français (fr)</a></li><li class="a"><a class="wikilink2" title="עברית" href="/he:rewrite">עברית (he)</a></li><li class="a"><a class="wikilink2" title="Magyar" href="/hu:rewrite">Magyar (hu)</a></li><li class="a"><a class="wikilink2" title="Italiano" href="/it:rewrite">Italiano (it)</a></li><li class="a"><a class="wikilink1" title="日本語" href="/ja:rewrite">日本語 (ja)</a></li><li class="a"><a class="wikilink1" title="한국어" href="/ko:rewrite">한국어 (ko)</a></li><li class="a"><a class="wikilink2" title="Lietuvių Kalba" href="/lt:rewrite">Lietuvių Kalba (lt)</a></li><li class="a"><a class="wikilink2" title="Nederlands" href="/nl:rewrite">Nederlands (nl)</a></li><li class="a"><a class="wikilink2" title="Norsk" href="/no:rewrite">Norsk (no)</a></li><li class="a"><a class="wikilink1" title="Polski" href="/pl:rewrite">Polski (pl)</a></li><li class="a"><a class="wikilink2" title="Português" href="/pt-br:rewrite">Português (pt-br)</a></li><li class="a"><a class="wikilink2" title="Română" href="/ro:rewrite">Română (ro)</a></li><li class="span"><span class="wikilink1" title="Русский">Русский (ru)</span></li><li class="a"><a class="wikilink2" title="Српски Језик" href="/sr:rewrite">Српски Језик (sr)</a></li><li class="a"><a class="wikilink2" title="Svenska" href="/sv:rewrite">Svenska (sv)</a></li><li class="a"><a class="wikilink2" title="ไทย" href="/th:rewrite">ไทย (th)</a></li><li class="a"><a class="wikilink2" title="Українська" href="/uk:rewrite">Українська (uk)</a></li><li class="a"><a class="wikilink1" title="中文" href="/zh:rewrite">中文 (zh)</a></li><li class="a"><a class="wikilink2" title="繁體中文" href="/zh-tw:rewrite">繁體中文 (zh-tw)</a></li></ul></div> <p> <strong>О «Докувики»</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/ru:features" class="wikilink1" title="ru:features" data-wiki-id="ru:features">Возможности</a> и <a href="/blogroll" class="wikilink1" title="blogroll" data-wiki-id="blogroll">обзоры</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:install" class="wikilink1" title="ru:install" data-wiki-id="ru:install">Руководство по установке</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:manual" class="wikilink1" title="ru:manual" data-wiki-id="ru:manual">Руководство пользователя</a> и <a href="/ru:wiki:syntax" class="wikilink1" title="ru:wiki:syntax" data-wiki-id="ru:wiki:syntax">синтаксис</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:changes" class="wikilink1" title="ru:changes" data-wiki-id="ru:changes">Журнал изменений</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:faq" class="wikilink1" title="ru:faq" data-wiki-id="ru:faq">ЧаВО</a></div> </li> </ul> <p> <strong>Дополнительные возможности</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/ru:extensions" class="wikilink1" title="ru:extensions" data-wiki-id="ru:extensions">Шаблоны и плагины</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:development" class="wikilink1" title="ru:development" data-wiki-id="ru:development">Ресурсы для разработчиков</a></div> </li> </ul> <p> <strong>Для бизнеса</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/ru:faq:support" class="wikilink1" title="ru:faq:support" data-wiki-id="ru:faq:support">Сторонняя поддержка</a></div> </li> <li class="level1"><div class="li"> <a href="/ru:donate" class="wikilink1" title="ru:donate" data-wiki-id="ru:donate">Пожертвования</a></div> </li> </ul> <p> <strong>Наше сообщество</strong> </p> <ul> <li class="level1"><div class="li"> <a href="/teams:getting_involved" class="wikilink1" title="teams:getting_involved" data-wiki-id="teams:getting_involved">Принять участие</a></div> </li> <li class="level1"><div class="li"> <a href="https://forum.dokuwiki.org/" class="urlextern" title="https://forum.dokuwiki.org/">Форум</a></div> </li> <li class="level1"><div class="li"> <a href="/mailinglist" class="wikilink1" title="mailinglist" data-wiki-id="mailinglist">Список рассылки для разработчиков</a></div> </li> </ul> <hr /> <p> Следуйте за нами на <a href="https://phpc.social/@dokuwiki" class="urlextern" title="https://phpc.social/@dokuwiki">Мастодоне</a> и других <a href="/ru:social" class="wikilink1" title="ru:social" data-wiki-id="ru:social">социальных сетях</a>. </p> <p> <a href="/privacy" class="wikilink1" title="privacy" data-wiki-id="privacy">Конфиденциальность</a> <em>(англ.)</em> </p> </div></div> </div></nav><!-- /aside --> <!-- ********** CONTENT ********** --> <main id="dokuwiki__content"><div class="pad group"> <div class="pageId"><span>ru:rewrite</span></div> <div class="page group"> <!-- wikipage start --> <!-- TOC START --> <div id="dw__toc" class="dw__toc"> <h3 class="toggle">Содержание</h3> <div> <ul class="toc"> <li class="level1"><div class="li"><a href="#url-преобразование">URL-преобразование</a></div> <ul class="toc"> <li class="level2"><div class="li"><a href="#метод_0редактирование_php-кода_замена_имени_стартового_файла">Метод 0: редактирование php-кода, замена имени стартового файла</a></div></li> <li class="level2"><div class="li"><a href="#метод_1с_помощью_веб-сервера">Метод 1: с помощью веб-сервера</a></div> <ul class="toc"> <li class="level3"><div class="li"><a href="#hiawatha">Hiawatha</a></div></li> <li class="level3"><div class="li"><a href="#apache">Apache</a></div></li> <li class="level3"><div class="li"><a href="#iis">IIS</a></div></li> <li class="level3"><div class="li"><a href="#lighttpd">Lighttpd</a></div></li> <li class="level3"><div class="li"><a href="#nginx">Nginx</a></div></li> </ul> </li> <li class="level2"><div class="li"><a href="#метод_2докувики">Метод 2: ДокуВики</a></div></li> <li class="level2"><div class="li"><a href="#чистые_id_сессий_php">Чистые ID сессий PHP</a></div></li> </ul> </li> <li class="level1"><div class="li"><a href="#обсуждение">Обсуждение</a></div></li> </ul> </div> </div> <!-- TOC END --> <h1 class="sectionedit1" id="url-преобразование">URL-преобразование</h1> <div class="level1"> <p> По умолчанию «<a href="/ru:dokuwiki" class="wikilink1" title="ru:dokuwiki" data-wiki-id="ru:dokuwiki">ДокуВики</a>» не производит преобразования <abbr title="Uniform Resource Locator">URL</abbr><sup><a href="#fn__1" id="fnt__1" class="fn_top">1)</a></sup>, что приводит к использованию <abbr title="Uniform Resource Locator">URL</abbr> подобных такому: </p> <pre class="code">http://example.com/doku.php?id=page</pre> <p> Такие <abbr title="Uniform Resource Locator">URL</abbr> выглядят довольно страшненько и, кроме того, плохо индексируются поисковыми машинами. </p> <p> Выходом из этой ситуации является использование <abbr title="Uniform Resource Locator">URL</abbr>-преобразования. «ДокуВики» поддерживает два метода <abbr title="Uniform Resource Locator">URL</abbr>-преобразования, которые можно указать в настройке «<a href="/ru:config:userewrite" class="wikilink1" title="ru:config:userewrite" data-wiki-id="ru:config:userewrite">userewrite</a>». Один использует возможности преобразования обеспечиваемые веб-сервером, другой справляется с преобразованиями средствами самой «ДокуВики». Возможные значения опции «<a href="/ru:config:userewrite" class="wikilink1" title="ru:config:userewrite" data-wiki-id="ru:config:userewrite">userewrite</a>» приведены в следующей таблице. </p> <div class="table sectionedit2"><table class="inline"> <thead> <tr class="row0"> <th class="col0"> Значение </th><th class="col1"> Описание </th><th class="col2"> Пример <abbr title="Uniform Resource Locator">URL</abbr> </th> </tr> </thead> <tr class="row1"> <td class="col0"> 0 </td><td class="col1"> Преобразование <abbr title="Uniform Resource Locator">URL</abbr> не используется. Это значение по умолчанию. </td><td class="col2"> http://example.com/dokuwiki/doku.php?id=wiki:syntax </td> </tr> <tr class="row2"> <td class="col0"> 1 </td><td class="col1 leftalign"> Преобразование <abbr title="Uniform Resource Locator">URL</abbr> средствами веб-сервера. </td><td class="col2 leftalign"> http://example.com/dokuwiki/wiki:syntax </td> </tr> <tr class="row3"> <td class="col0"> 2 </td><td class="col1 leftalign"> Преобразование <abbr title="Uniform Resource Locator">URL</abbr> делается самой «ДокуВики». </td><td class="col2 leftalign"> http://example.com/dokuwiki/doku.php/wiki:syntax </td> </tr> </table></div> <div class="secedit editbutton_table editbutton_2"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Таблица] " /><input type="hidden" name="target" value="table" /><input type="hidden" name="hid" value="table" /><input type="hidden" name="range" value="1212-1778" /><button type="submit" title="Таблица">Править</button></div></form></div> <p> Преобразование <abbr title="Uniform Resource Locator">URL</abbr> отключено по умолчанию потому, что оно требует дополнительных настроек помимо установки значения самой <a href="/ru:config:userewrite" class="wikilink1" title="ru:config:userewrite" data-wiki-id="ru:config:userewrite">опции</a>. Рассмотрением этих настроек мы и займёмся далее. </p> <p> <strong>К сведению.</strong> Чтобы опробовать примеры, излагаемые в статье, просто добавьте или измените строку в файле <code>conf/local.php</code> следующим образом: <code>$conf['userewrite'] = N</code>, где N равно 1 или 2 (ничего делать не нужно, если хотите N равное 0). </p> </div> <div class="secedit editbutton_section editbutton_1"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[URL-преобразование] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="url-преобразование" /><input type="hidden" name="codeblockOffset" value="0" /><input type="hidden" name="range" value="1-2524" /><button type="submit" title="URL-преобразование">Править</button></div></form></div> <h2 class="sectionedit3" id="метод_0редактирование_php-кода_замена_имени_стартового_файла">Метод 0: редактирование php-кода, замена имени стартового файла</h2> <div class="level2"> <p> Далее речь пойдет о замене стартовой страницы “doku.php, если вам вдруг нужно ее переименовать, скажем, по локальным причинам (это имя может нехорошо звучать на разных языках). Я использую Apache но думаю, что это не имеет значения.. </p> <ul> <li class="level1"><div class="li"> Если вы хотите изменить имя папки (по умолчанию 'dokuwiki' - например на: 'mywiki'), никаких DokuWiki настроек не потребуется.</div> </li> <li class="level1"><div class="li"> Если вы хотите изменить имя стандартного файла 'doku.php' (например на: 'start.php'):</div> </li> </ul> <p> 1. Отредактируйте файл 'index.php' (что в папке /dokuwiki) </p> <pre class="code php"><a href="http://www.php.net/header"><span class="kw3">header</span></a><span class="br0">(</span><span class="st0">"Location: start.php"</span><span class="br0">)</span><span class="sy0">;</span></pre> <p> 2. Отредактируйте файл <del>'/inc/init.php'</del> 'inc/preload.php' (в папке /dokuwiki), создайте, если его нет. inc/preload.php не является частью вики по умолчанию, поэтому не будет перезаписан во время установки обновлений. </p> <pre class="code php"><span class="kw2"><?php</span> <span class="kw1">if</span><span class="br0">(</span><span class="sy0">!</span><a href="http://www.php.net/defined"><span class="kw3">defined</span></a><span class="br0">(</span><span class="st_h">'DOKU_SCRIPT'</span><span class="br0">)</span><span class="br0">)</span> <a href="http://www.php.net/define"><span class="kw3">define</span></a><span class="br0">(</span><span class="st_h">'DOKU_SCRIPT'</span><span class="sy0">,</span><span class="st_h">'start.php'</span><span class="br0">)</span><span class="sy0">;</span></pre> <p> Это все! </p> <p> Если вы нашли еще php-файлы на редактирование, пожалуйста, укажите их здесь. </p> <p> С ув. Bronek </p> </div> <div class="secedit editbutton_section editbutton_3"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Метод 0: редактирование php-кода, замена имени стартового файла] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="метод_0редактирование_php-кода_замена_имени_стартового_файла" /><input type="hidden" name="codeblockOffset" value="1" /><input type="hidden" name="range" value="2525-4156" /><button type="submit" title="Метод 0: редактирование php-кода, замена имени стартового файла">Править</button></div></form></div> <h2 class="sectionedit4" id="метод_1с_помощью_веб-сервера">Метод 1: с помощью веб-сервера</h2> <div class="level2"> <p> <img src="/lib/images/smileys/exclaim.svg" class="icon smiley" alt=":!:" /> Не забудьте установить следущие опции в Настройках вики <code>/start?do=admin&page=config</code> </p> <ul> <li class="level1"><div class="li"> Удобочитаемые адреса (<abbr title="Uniform Resource Locator">URL</abbr>): <strong>.htaccess</strong></div> </li> <li class="level1"><div class="li"> Использовать слэш в качестве разделителя именных зон в <abbr title="Uniform Resource Locator">URL</abbr>: [<strong>x</strong>]</div> </li> </ul> <p> Иначе правила <abbr title="Uniform Resource Locator">URL</abbr>-преобразований не будут работать. </p> </div> <div class="secedit editbutton_section editbutton_4"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Метод 1: с помощью веб-сервера] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="метод_1с_помощью_веб-сервера" /><input type="hidden" name="codeblockOffset" value="3" /><input type="hidden" name="range" value="4157-4641" /><button type="submit" title="Метод 1: с помощью веб-сервера">Править</button></div></form></div> <h3 class="sectionedit5" id="hiawatha">Hiawatha</h3> <div class="level3"> <p> → <a href="/install:hiawatha#url-преобразования_для_веб-сервера_hiawatha" class="wikilink1" title="install:hiawatha" data-wiki-id="install:hiawatha">URL-преобразования для веб-сервера Hiawatha</a> </p> </div> <div class="secedit editbutton_section editbutton_5"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Hiawatha] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="hiawatha" /><input type="hidden" name="codeblockOffset" value="3" /><input type="hidden" name="range" value="4642-4757" /><button type="submit" title="Hiawatha">Править</button></div></form></div> <h3 class="sectionedit6" id="apache">Apache</h3> <div class="level3"> <p> Преобразование <abbr title="Uniform Resource Locator">URL</abbr> в Apache делается с помощью модуля <strong>mod_rewrite</strong> для <a href="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html" class="urlextern" title="http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html">первой</a> или <a href="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html" class="urlextern" title="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">второй</a> версии Apache. Этот модуль активируется в <code>httpd.conf</code> указанием следующей строки (убедитесь, что она не закоментирована): </p> <pre class="code apache"><span class="kw1">LoadModule</span> rewrite_module modules/mod_rewrite.so</pre> <p> Во многих клонах Linux (Ubuntu, Debian и т. д.) вы можете активировать <code>mod_rewrite</code> так: </p> <pre class="code bash"><span class="kw2">sudo</span> a2enmod rewrite</pre> <p> Настройка модуля <code>mod_rewrite</code> делается с помощью так называемых <strong>правил преобразования</strong> (rewrite rules), которые могут быть определены как в основном файле настройки сервера или в файле <code>.htaccess</code> в основной директории «ДокуВики». «ДокуВики» поставляется с файлом <code>.htaccess.dist</code>, содержащим необходимые (правда, закомментированые) правила преобразования для метода 1. Для активации <abbr title="Uniform Resource Locator">URL</abbr>-преобразования просто скопируйте этот файл в <code>.htaccess</code> и раскомментируйте строки. </p> <pre class="code apache"><span class="kw1">RewriteEngine</span> <span class="kw2">on</span> <span class="kw1">RewriteBase</span> /dokuwiki <span class="kw1">RewriteRule</span> ^_media/(.*) lib/exe/fetch.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^_detail/(.*) lib/exe/detail.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L] <span class="kw1">RewriteRule</span> ^$ doku.php [L] <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-f <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-d <span class="kw1">RewriteRule</span> (.*) doku.php?id=$1 [QSA,L]</pre> <p> В строке <code>RewriteBase /dokuwiki</code> вам необходимо заменить <code>/dokuwiki</code> на нужную вам. Предположим, что ваш нормальный (при userewrite=0) <abbr title="Uniform Resource Locator">URL</abbr> выглядит так <a href="http://www.whatever.com/projects/documents/doku.php" class="urlextern" title="http://www.whatever.com/projects/documents/doku.php">http://www.whatever.com/projects/documents/doku.php</a>. Тогда вам нужно написать в этой строке <code>RewriteBase /projects/documents</code>. Однако, иногда эта строка не нужна вовсе. </p> </div> <h4 id="некоторые_замечания">Некоторые замечания</h4> <div class="level4"> <p> Файл <code>.htaccess</code> принимается во внимание только, если это разрешено в основном файле конфигурации Apache. Многие инсталляции Apache по умолчанию этого не делают. Для разрешения попробуйте добавить в <code>httpd.conf</code> следующее: </p> <pre class="code apache"><<span class="kw3">Directory</span> /path/to/dokuwiki> <span class="kw1">AllowOverride</span> AuthConfig FileInfo Limit </<span class="kw3">Directory</span>></pre> <p> P. S. В примере выше в <code>AllowOverride</code> указанны только опции необходимые для работы в дефолтной конфигурации. Если для вас это не работает, попробуйте разрешить все <code>AllowOverride All</code> </p> <p> В качестве альтернативы вы можете указать вышеприведенные правила преобразования непосредственно в <code>httpd.conf</code>: </p> <pre class="code apache"><<span class="kw3">Directory</span> /path/to/dokuwiki> <span class="kw1">RewriteEngine</span> <span class="kw2">on</span> ... здесь правила преобразования... </<span class="kw3">Directory</span>></pre> <p> Может понадобиться перегрузка Apache для того, чтобы изменения вступили в силу. </p> <p> Некоторые пользователи сообщают о появлении ошибке «403 — Forbidden» после включения поддержки преобразования. Установка опции <code>FollowSymlinks</code> должна решить эту проблему: </p> <pre class="code apache"><span class="kw1">Options</span> +<span class="kw2">FollowSymlinks</span> <span class="kw1">RewriteEngine</span> <span class="kw2">on</span> ...etc.</pre> <p> Приведённые выше правила преобразования отсылают все запросы на несуществующие файлы и директории к основному «ДокуВики». Это может быть применено и к виртуальным отображениям (aliases). Некоторые сайты отображают доступ к статистике в виртуальной директории <code>/stats</code>. Для того, чтобы эта виртуальная директория оставалась доступной, вам нужно исключить ее из условий преобразования. Например: </p> <pre class="code apache">... <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-f <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-d <span class="kw1">RewriteCond</span> %{REQUEST_URI} !^/stats/(.*)$ ...</pre> <p> Если ваш сайт работает без RewriteBase, например из-за того, что вы хоститесь в выделенном VirtualHost, вы должны соответственно изменить правила преобразования. </p> <pre class="code apache"><span class="kw1">RewriteRule</span> ^/_media/(.*) /lib/exe/fetch.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^/_detail/(.*) /lib/exe/detail.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 [QSA,L] <span class="kw1">RewriteRule</span> ^/$ /doku.php [L] <span class="kw1">RewriteCond</span> %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f <span class="kw1">RewriteCond</span> %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d <span class="kw1">RewriteRule</span> (.*) /doku.php?id=$1 [QSA,L]</pre> <p> Каждое поле пути в RewriteRule должно начинаться со слеша, иначе Apache будет возвращать код ошибки 400. </p> </div> <div class="secedit editbutton_section editbutton_6"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Apache] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="apache" /><input type="hidden" name="codeblockOffset" value="3" /><input type="hidden" name="range" value="4758-10718" /><button type="submit" title="Apache">Править</button></div></form></div> <h3 class="sectionedit7" id="iis">IIS</h3> <div class="level3"> </div> <h4 id="isapi_rewrite_lite">ISAPI Rewrite Lite</h4> <div class="level4"> <p> IIS doesn't come standard with a rewrite module. I used <a href="http://www.isapirewrite.com/" class="urlextern" title="http://www.isapirewrite.com/">ISAPI Rewrite Lite</a> (free) successful with these rewrite rules (see the file <code>C:\Program Files\Helicon\ISAPI_Rewrite\httpd.ini</code>): </p> <pre class="code apache"><span class="co1"># Dokuwiki rules</span> <span class="co1"># Fix RSS Feeds</span> <span class="kw1">RewriteRule</span> ^(/wiki/)feed.php $1/feed.php [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L] <span class="kw1">RewriteRule</span> (/wiki/) $1doku.php [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)\?idx=(.*) $1doku.php\?idx=$2 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)lib/(.*) $1lib/$2 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)doku.php\?id=(.*) $1doku.php\?id=$2 [I,L] <span class="kw1">RewriteRule</span> ^(/wiki/)(.*) $1doku.php\?id=$2 [I,L] <span class="co1"># this rule fixes a problem to see the old revisions</span> <span class="kw1">RewriteRule</span> ^(/wiki/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L] <span class="co1"># Diff still broken unless none is selected under 'use nice URL' options. You can still enter and link to nice URLs but the DokuWiki program will use normal naming.</span></pre> <p> For all lines with <code>RewriteRule ^(/wiki/)</code>, you need to replace the <code>(/wiki/)</code> with whatever directory you use in your <abbr title="Uniform Resource Locator">URL</abbr> to get to the wiki. Say that your normal (Option 0) <abbr title="Uniform Resource Locator">URL</abbr> is <a href="http://www.whatever.com/projects/documents/doku.php" class="urlextern" title="http://www.whatever.com/projects/documents/doku.php">http://www.whatever.com/projects/documents/doku.php</a> . You will need to set the above line to <code>^(/projects/documents/)</code>. </p> </div> <h4 id="ionics_isapi_rewrite_filter">Ionics Isapi Rewrite Filter</h4> <div class="level4"> <p> It is also possible to use <a href="http://www.codeplex.com/IIRF" class="urlextern" title="http://www.codeplex.com/IIRF">Ionics Isapi Rewrite Filter</a>, which is free and open-source. </p> <pre class="code apache">IterationLimit <span class="nu0">1</span> <span class="co1"># QSA is not supported, fix it</span> <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-f <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-d <span class="kw1">RewriteRule</span> (.*)\?(.*) $1&$2 <span class="kw1">RewriteRule</span> ^/_media/(.*) /lib/exe/fetch.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^/_detail/(.*) /lib/exe/detail.php?media=$1 [QSA,L] <span class="kw1">RewriteRule</span> ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 [QSA,L] <span class="kw1">RewriteRule</span> ^/$ /doku.php [QSA,L] <span class="co1"># infinite redirect fix</span> <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-d <span class="kw1">RewriteRule</span> ^/(.*)/$ /doku.php?id=$1 [QSA,L] <span class="co1"># end fix</span> <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-f <span class="kw1">RewriteCond</span> %{REQUEST_FILENAME} !-d <span class="kw1">RewriteRule</span> ^/(.*) /doku.php?id=$1 [QSA,L]</pre> </div> <div class="secedit editbutton_section editbutton_7"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[IIS] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="iis" /><input type="hidden" name="codeblockOffset" value="11" /><input type="hidden" name="range" value="10719-13332" /><button type="submit" title="IIS">Править</button></div></form></div> <h3 class="sectionedit8" id="lighttpd">Lighttpd</h3> <div class="level3"> <p> Assuming you have followed <a href="/install:lighttpd" class="wikilink1" title="install:lighttpd" data-wiki-id="install:lighttpd">instructions</a> for how to set up dokuwiki under lighttpd. If you haven't, define var.dokudir as shown in the example. </p> <pre class="code bash"><span class="co0"># rewrites for dokuwiki</span> <span class="re1">$HTTP</span><span class="br0">[</span><span class="st0">"url"</span><span class="br0">]</span> =~ <span class="st0">"^"</span> + var.dokudir <span class="br0">{</span> index-file.names = <span class="br0">(</span><span class="st0">"doku.php"</span><span class="br0">)</span> <span class="br0">}</span> url.rewrite = <span class="br0">(</span> <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/lib/.*$"</span> =<span class="sy0">></span> <span class="st0">"$0"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_media/(.*)?\?(.*)$"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/lib/exe/fetch.php?media=$1&$2"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_media/(.*)$"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/lib/exe/fetch.php?media=$1"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_detail/(.*)?\?(.*)$"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/lib/exe/detail.php?media=$1&$2"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_detail/(.*)?$"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/lib/exe/detail.php?media=$1"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_export/([^/]+)/(.*)\?(.*)$"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/doku.php?do=export_$1&id=$2&$3"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/_export/([^/]+)/(.*)"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/doku.php?do=export_$1&id=$2"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/doku.php.*"</span> =<span class="sy0">></span> <span class="st0">"$0"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/feed.php.*"</span> =<span class="sy0">></span> <span class="st0">"$0"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/(.*)\?(.*)"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/doku.php?id=$1&$2"</span>, <span class="st0">"^"</span> + var.dokudir + <span class="st0">"/(.*)"</span> =<span class="sy0">></span> var.dokudir + <span class="st0">"/doku.php?id=$1"</span> <span class="br0">)</span></pre> <p> An example config can be seen <a href="/install:lighttpd_config_example" class="wikilink1" title="install:lighttpd_config_example" data-wiki-id="install:lighttpd_config_example">here</a>. </p> </div> <div class="secedit editbutton_section editbutton_8"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Lighttpd] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="lighttpd" /><input type="hidden" name="codeblockOffset" value="13" /><input type="hidden" name="range" value="13333-14693" /><button type="submit" title="Lighttpd">Править</button></div></form></div> <h3 class="sectionedit9" id="nginx">Nginx</h3> <div class="level3"> <p> Nginx is a very fast and stable httpd, see more about <a href="http://nginx.net/" class="urlextern" title="http://nginx.net/">nginx project</a>, and an English <a href="http://wiki.codemongers.com/Nginx" class="urlextern" title="http://wiki.codemongers.com/Nginx">wiki</a>. In the following example, our server root is /var/www, and we extract dokuwiki to /var/www/dokuwiki. </p> <pre class="code"> server { listen 80; server_name _ *; port_in_redirect off; optimize_server_names off; access_log /var/log/nginx/localhost.access.log; rewrite ^(/dokuwiki/)_media/(.*) $1lib/exe/fetch.php?media=$2 last; rewrite ^(/dokuwiki/)_detail/(.*) $1lib/exe/detail.php?media=$2 last; rewrite ^(/dokuwiki/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 last; location / { root /var/www; index index.html index.htm index.php; } location /dokuwiki/ { if (!-f $request_filename) { rewrite ^(/dokuwiki/)(.*)?(.*) $1doku.php?id=$2&$3 last; rewrite ^(/dokuwiki/)$ $1doku.php last; } } error_page 500 502 503 504 /50x.html; location = /50x.html { root /var/www; } location ~ \.php$ { fastcgi_pass 127.0.0.1:8888; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include /etc/nginx/fastcgi_params; } } </pre> </div> <h4 id="notes">Notes</h4> <div class="level4"> <p> Nginx has complete support for fastcgi, please reference <a href="http://wiki.codemongers.com/NginxHttpFcgiModule" class="urlextern" title="http://wiki.codemongers.com/NginxHttpFcgiModule">nginx fastcgi</a> document to fit your setup. </p> <p> The last keyword of rewrite rules before location setup make sure that rewrite only happens once. You should replace all /dokuwiki/ appeared above to you wiki directory relative to web server root directory. </p> </div> <div class="secedit editbutton_section editbutton_9"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Nginx] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="nginx" /><input type="hidden" name="codeblockOffset" value="14" /><input type="hidden" name="range" value="14694-16495" /><button type="submit" title="Nginx">Править</button></div></form></div> <h2 class="sectionedit10" id="метод_2докувики">Метод 2: ДокуВики</h2> <div class="level2"> <div class="table sectionedit11"><table class="inline"> <tr class="row0"> <td class="col0"> $conf['userewrite'] = 2; </td> </tr> </table></div> <div class="secedit editbutton_table editbutton_11"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Таблица] " /><input type="hidden" name="target" value="table" /><input type="hidden" name="hid" value="table1" /><input type="hidden" name="range" value="16540-16568" /><button type="submit" title="Таблица">Править</button></div></form></div> <p> This option won't need any webserver setup. However it relies on the PATH_INFO feature of the CGI standard as implemented by Apache. IIS is <a href="http://bugs.dokuwiki.org/index.php?do=details&task_id=718" class="interwiki iw_bug" title="http://bugs.dokuwiki.org/index.php?do=details&task_id=718">known not to work</a> with this setting<sup><a href="#fn__2" id="fnt__2" class="fn_top">2)</a></sup>. IIS6 (MS Server 2003) works pretty fine, when <code>basedir</code> is set to <code>/</code>. </p> <p> Using Apache's <strong>Alias directive</strong> with this option can lead to severe headaches and broken wiki! ⇐ A patch which should solve this problem is available here: <a href="https://www.trg-oha.de/~sstrickroth/dokuwiki-alias.patch" class="urlextern" title="https://www.trg-oha.de/~sstrickroth/dokuwiki-alias.patch">https://www.trg-oha.de/~sstrickroth/dokuwiki-alias.patch</a> </p> </div> <div class="secedit editbutton_section editbutton_10"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Метод 2: ДокуВики] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="метод_2докувики" /><input type="hidden" name="codeblockOffset" value="15" /><input type="hidden" name="range" value="16496-17091" /><button type="submit" title="Метод 2: ДокуВики">Править</button></div></form></div> <h2 class="sectionedit12" id="чистые_id_сессий_php">Чистые ID сессий PHP</h2> <div class="level2"> <p> Несмотря на использование «чистых» <abbr title="Uniform Resource Locator">URL</abbr>, вы можете столкнуться с «параметром ДокуВики» в <abbr title="Uniform Resource Locator">URL</abbr>, выглядящим как: </p> <pre class="code">http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5</pre> <p> Этот параметр является ID сессии PHP и добавляется самим PHP автоматически. Это абсолютно не связано с преобразованием <abbr title="Uniform Resource Locator">URL</abbr>. Для того, чтобы избежать этого, вы можете принудить PHP всегда использовать cookies для работы с сессиями, выставив опцию <code>session.use_only_cookies</code> в настройках PHP. </p> <p> Это обычно делается в файле <code>php.ini</code> (если вы используете сервер хостера, то выясните в его поддержке, как можно редактировать этот файл): </p> <pre class="code ini">session.use_only_cookies <span class="sy0">=</span><span class="re2"> 1</span></pre> <p> Если вы все ещё видите ID сессий, попробуйте еще: </p> <pre class="code ini">session.use_trans_sid <span class="sy0">=</span><span class="re2"> 0</span></pre> <p> Если ваш PHP работает как модуль Apache, то у вас есть возможность подправить эти значения в файле <code>.htaccess</code>, используя следующий синтаксис: </p> <pre class="code">php_flag session.use_only_cookies on php_flag session.use_trans_sid off</pre> <p> Если вы не можете использовать ни то, ни другое решение (многие вебхостеры запрещают редактирование <code>php.ini</code> и использование <code>php_flag</code> в <code>.htaccess</code>), вам придется редактировать <code>conf/local.php</code>. Заметим, что упомянутые выше настройки не могут быть изменены вызовом ini_set(), начиная с версии PHP 4.2.3, поэтому <strong>единственный</strong> способ сделать это — использовать следующее: </p> <pre class="code php"><a href="http://www.php.net/ini_set"><span class="kw3">ini_set</span></a><span class="br0">(</span><span class="st_h">'url_rewriter.tags'</span><span class="sy0">,</span> <span class="st_h">''</span><span class="br0">)</span><span class="sy0">;</span></pre> <blockquote><div class="no"> My problem was that my <strong>session.cookie_domain</strong> was incorrectly set (I'm doing virtual hosting, and the domain name was incorrect). I added <pre class="code">php_value session.cookie_domain www.my.domain.com</pre> <p> to the appropriate virtualhost in my httpd.conf (though .htaccess would probably work just as well), and the polluted URLs disappeared. Also, if you can't get to your php.ini or apache config, you should be able to use <strong>ini_set('PHP variable', 'value');</strong> to the same effect (it seems that conf/local.php is a good place to put this, as the file is included before the session is started). </p> </div></blockquote> <blockquote><div class="no"> In my case, FastCGI was causing session IDs to appear. Disabling it removed them.</div></blockquote> </div> <div class="secedit editbutton_section editbutton_12"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Чистые ID сессий PHP] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="чистые_id_сессий_php" /><input type="hidden" name="codeblockOffset" value="15" /><input type="hidden" name="range" value="17092-20047" /><button type="submit" title="Чистые ID сессий PHP">Править</button></div></form></div> <h1 class="sectionedit13" id="обсуждение">Обсуждение</h1> <div class="level1"> <ul> <li class="level1 node"><div class="li"> Even when using above configuration with Apache, often the <abbr title="Uniform Resource Locator">URL</abbr> becomes example.com/doku.php, no matter at what page you are. I could not find a solution to that.</div> <ul> <li class="level2"><div class="li"> It's an implementation issue, not a rewriting problem. — <em>BlackFog 2007-12-19 15:42</em></div> </li> </ul> </li> </ul> <ul> <li class="level1"><div class="li"> Option = 2 works with IIS 6 (Windows 2003) and current nightly build if <code>basedir</code> is set. — <em>BlackFog 2007-12-19 15:42</em></div> </li> </ul> <ul> <li class="level1"><div class="li"> For Option = 2, it seems that we need to specify the value of <code>basedir</code> no matter which system we are using (Apache or IIS, etc); even when <code>doku.php</code> is just in the root dir we still need to specify <code>basedir</code> as <code>/</code> — <em><a href="mailto:xie%20%5Bat%5D%20yihui%20%5Bdot%5D%20name" class="mail" title="xie [at] yihui [dot] name">Yihui Xie</a> 2008/05/28 20:09</em></div> </li> </ul> <ul> <li class="level1 node"><div class="li"> For a long time I used DokuWiki (2) rewrite option, and now there are some links like <code>…/wiki/doku.php/…</code> spread through the internet. If now I'll use <code>.htaccess</code> rewrite method (1), which is discussed here, all those old links with <code>doku.php</code> will become invalid. Is it possible to add some rules so that old links were still valid? If yes, please, explain how can it be done. </div> <ul> <li class="level2"><div class="li"> The solution was to add <code>RewriteRule doku.php/(.*) doku.php?id=$1 [QSA,L]</code> right after <code>RewriteRule ^_export/([^/]+)/(.*) doku.php?do=export_$1&id=$2 [QSA,L]</code> line.</div> </li> </ul> </li> </ul> <ul> <li class="level1"><div class="li"> Using rewrite rules for nginx that are presented breaks retrieval of images from dokuwiki. It seems to be not using the default value of root:</div> </li> </ul> <pre class="code">[error] 27613#0: *1 open() "/usr/local/nginx/html/wiki/lib/tpl/arctic/images/button-firefox.png" failed</pre> <ul> <li class="level1"><div class="li"> My solutions is to add the following to the nginx.conf:</div> </li> </ul> <pre class="code">location /wiki/lib/ { root /var/www/path/to/site.../; }</pre> <p> — <em>thedimi.net 2009-03-06 00:00</em> </p> <ul> <li class="level1"><div class="li"> With IIS and Helicon Isapi_Rewrite, if Dokuwiki is in the root, the code for httpd.ini should be (note the absence of the subdirectory and the fact that there are 2 lines for «_media» and not just 1 as mentioned in the code above):</div> </li> </ul> <pre class="code"># Dokuwiki rules # Fix RSS Feeds RewriteRule ^(/)feed.php $1/feed.php [I,L] RewriteRule ^(/)feed.php\?(.*) $1/feed.php\?mode=$2&$3 [I,L] RewriteRule ^(/)_media/(.*)\?(.*) $1lib/exe/fetch.php\?media=$2&$3 [I,L] RewriteRule ^(/)_media/(.*) $1lib/exe/fetch.php\?media=$2 [I,L] RewriteRule ^(/)_detail/(.*)\?(.*) $1lib/exe/detail.php\?media=$2&$3 [I,L] RewriteRule ^(/)_detail/(.*) $1lib/exe/detail.php\?media=$2 [I,L] RewriteRule ^(/)_export/([^/]+)/(.*) $1doku.php?do=export_$2&id=$3 [I,L] RewriteRule (/) $1doku.php [I,L] RewriteRule ^(/)\?idx=(.*) $1doku.php\?idx=$2 [I,L] RewriteRule ^(/)lib/(.*) $1lib/$2 [I,L] RewriteRule ^(/)(.*)\?do=(.*) $1doku.php\?id=$2&do=$3 [I,L] RewriteRule ^(/)doku.php\?id=(.*) $1doku.php\?id=$2 [I,L] RewriteRule ^(/)(.*) $1doku.php\?id=$2 [I,L] # this rule fixes a problem to see the old revisions RewriteRule ^(/)(.*)\?(.*) $1doku.php\?id=$2&$3 [I,L] # Diff still broken unless none is selected under 'use nice URL' options. You can still enter and link to nice URLs but the DokuWiki program will use normal naming.</pre> <p> Trouble. apache2, php2 (external module), current dokuwiki, configuration in virtual host: </p> <pre class="code"> <LocationMatch "/(data|conf|bin|inc)/"> Order allow,deny Deny from all Satisfy All </LocationMatch> RewriteEngine on RewriteRule ^/_media/(.*) /lib/exe/fetch.php?media=$1 [QSA,L] RewriteRule ^/_detail/(.*) /lib/exe/detail.php?media=$1 [QSA,L] RewriteRule ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 [QSA,L] RewriteRule ^/$ /doku.php [L] RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d RewriteRule (.*) /doku.php?id=$1 [QSA,L]</pre> <p> and request to «site.ru/_media/nasharahsamario.jpg» gives 403 (forbidden) dokuwiki page error log says: client denied by server configuration: /lib/exe rewrite log: </p> <pre class="code">85.21.2.184 - - [25/Feb/2011:11:19:52 +0300] [wp.website.ru/sid#b7857b08][rid#b79de0a0/initial] (2) rewrite '/_media/nasharahsamario.jpg' -> '/lib/exe/fetch.php?media=nasharahsamario.jpg' 85.21.2.184 - - [25/Feb/2011:11:19:52 +0300] [wp.website.ru/sid#b7857b08][rid#b79de0a0/initial] (2) local path result: /lib/exe/fetch.php 85.21.2.184 - - [25/Feb/2011:11:19:52 +0300] [wp.website.ru/sid#b7857b08][rid#b79de0a0/initial] (1) go-ahead with /lib/exe/fetch.php [OK] 85.21.2.184 - - [25/Feb/2011:11:19:52 +0300] [wp.website.ru/sid#b7857b08][rid#b79dfe68/initial/redir#1] (2) init rewrite engine with requested uri /error/HTTP_FORBIDDEN.html.var 85.21.2.184 - - [25/Feb/2011:11:19:52 +0300] [wp.website.ru/sid#b7857b08][rid#b79dfe68/initial/redir#1] (2) rewrite '/error/HTTP_FORBIDDEN.html.var' -> '/doku.php?id=/error/HTTP_FORBIDDEN.html.var'</pre> <p> thx </p> <hr /> <ul> <li class="level1"><div class="li"> <a href="http://shcherbyna.my-board.org/dokuwiki" class="urlextern" title="http://shcherbyna.my-board.org/dokuwiki">DokuWikiStick local config</a></div> </li> </ul> <p> 1) <em class="u">C:\..\DokuWikiStick\server\conf\httpd.conf</em> </p> <dl class="code"> <dt><a href="/_export/code/ru:rewrite?codeblock=26" title="Скачать фрагмент кода" class="mediafile mf_conf">httpd.conf</a></dt> <dd><pre class="code perl"><span class="co1"># absolute minimum configuration for DokuWiki on a Stick</span> <span class="co1"># change the Listen directive if you want to use a different port</span> <span class="sy0">...</span> <span class="sy0">...</span> <span class="co1"># Configure the path to php.ini</span> PHPIniDir php <span class="co1"># http://localhost:8800/doku.php?id=ru:start > http://localhost:8800/ru/start</span> <span class="sy0"><</span>Directory <span class="sy0">./../</span>dokuwiki<span class="sy0">></span> AllowOverride AuthConfig FileInfo Limit <span class="sy0"></</span>Directory<span class="sy0">></span> AcceptPathInfo off KeepAlive on KeepAliveTimeout <span class="nu0">15</span> TimeOut <span class="nu0">30</span> DirectoryIndex <a href="http://perldoc.perl.org/functions/index.html"><span class="kw3">index</span></a><span class="sy0">.</span>html <a href="http://perldoc.perl.org/functions/index.html"><span class="kw3">index</span></a><span class="sy0">.</span>php</pre> </dd></dl> <p> 2) <em class="u">C:\..\DokuWikiStick\dokuwiki\.htaccess></em> </p> <dl class="code"> <dt><a href="/_export/code/ru:rewrite?codeblock=27" title="Скачать фрагмент кода" class="mediafile mf_htaccess">.htaccess</a></dt> <dd><pre class="code perl"><span class="co1">## http://localhost:8800/doku.php?id=ru:start > http://localhost:8800/ru/start</span> RewriteEngine on RewriteRule <span class="sy0">^</span>_media<span class="sy0">/</span><span class="br0">(</span><span class="sy0">.*</span><span class="br0">)</span> lib<span class="sy0">/</span>exe<span class="sy0">/</span>fetch<span class="sy0">.</span>php<span class="sy0">?</span>media<span class="sy0">=</span><span class="co3">$1</span> <span class="br0">[</span>QSA<span class="sy0">,</span>L<span class="br0">]</span> RewriteRule <span class="sy0">^</span>_detail<span class="sy0">/</span><span class="br0">(</span><span class="sy0">.*</span><span class="br0">)</span> lib<span class="sy0">/</span>exe<span class="sy0">/</span>detail<span class="sy0">.</span>php<span class="sy0">?</span>media<span class="sy0">=</span><span class="co3">$1</span> <span class="br0">[</span>QSA<span class="sy0">,</span>L<span class="br0">]</span> RewriteRule <span class="sy0">^</span>_export<span class="sy0">/</span><span class="br0">(</span><span class="br0">[</span><span class="sy0">^/</span><span class="br0">]</span><span class="sy0">+</span><span class="br0">)</span><span class="sy0">/</span><span class="br0">(</span><span class="sy0">.*</span><span class="br0">)</span> doku<span class="sy0">.</span>php<span class="sy0">?</span><span class="kw1">do</span><span class="sy0">=</span>export_<span class="co3">$1</span><span class="re0">&id</span><span class="sy0">=</span><span class="co3">$2</span> <span class="br0">[</span>QSA<span class="sy0">,</span>L<span class="br0">]</span> RewriteRule <span class="sy0">^</span>$ doku<span class="sy0">.</span>php <span class="br0">[</span>L<span class="br0">]</span> RewriteCond <span class="sy0">%</span><span class="br0">{</span>REQUEST_FILENAME<span class="br0">}</span> <span class="sy0">!-</span>f RewriteCond <span class="sy0">%</span><span class="br0">{</span>REQUEST_FILENAME<span class="br0">}</span> <span class="sy0">!-</span>d RewriteRule <span class="br0">(</span><span class="sy0">.*</span><span class="br0">)</span> doku<span class="sy0">.</span>php<span class="sy0">?</span>id<span class="sy0">=</span><span class="co3">$1</span> <span class="br0">[</span>QSA<span class="sy0">,</span>L<span class="br0">]</span> RewriteRule <span class="sy0">^</span>index<span class="sy0">.</span>php$ doku<span class="sy0">.</span>php</pre> </dd></dl> <p> 3) <em class="u">C:\..\DokuWikiStick\dokuwiki\conf\local.php</em> </p> <dl class="code"> <dt><a href="/_export/code/ru:rewrite?codeblock=28" title="Скачать фрагмент кода" class="mediafile mf_php">local.php</a></dt> <dd><pre class="code php"><span class="sy0">..</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'userewrite'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="co1">// .htaccess</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'useslash'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="nu0">1</span><span class="sy0">;</span> <span class="re0">$conf</span><span class="br0">[</span><span class="st_h">'fnencode'</span><span class="br0">]</span> <span class="sy0">=</span> <span class="st_h">'utf-8'</span><span class="sy0">;</span> <span class="sy0">..</span></pre> </dd></dl> </div> <div class="secedit editbutton_section editbutton_13"><form class="button btn_secedit" method="post" action="/ru:rewrite"><div class="no"><input type="hidden" name="do" value="edit" /><input type="hidden" name="rev" value="1712985111" /><input type="hidden" name="summary" value="[Обсуждение] " /><input type="hidden" name="target" value="section" /><input type="hidden" name="hid" value="обсуждение" /><input type="hidden" name="codeblockOffset" value="21" /><input type="hidden" name="range" value="20048-" /><button type="submit" title="Обсуждение">Править</button></div></form></div><div class="footnotes"> <div class="fn"><sup><a href="#fnt__1" id="fn__1" class="fn_bot">1)</a></sup> <div class="content"><abbr title="Uniform Resource Locator">URL</abbr> rewriting</div></div> <div class="fn"><sup><a href="#fnt__2" id="fn__2" class="fn_bot">2)</a></sup> <div class="content">См. <a href="#обсуждение" title="ru:rewrite ↵" class="wikilink1">обсуждение</a></div></div> </div> <!-- wikipage stop --> </div> <div class="docInfo"><bdi>ru/rewrite.txt</bdi> · Последнее изменение: <time datetime="2024-04-13T07:11:51+0200">2024-04-13 07:11</time> — <bdi>95.165.91.33</bdi></div> <hr class="a11y" /> </div></main><!-- /content --> <!-- PAGE ACTIONS --> <nav id="dokuwiki__pagetools" aria-labelledby="dokuwiki__pagetools__heading"> <h3 class="a11y" id="dokuwiki__pagetools__heading">Инструменты страницы</h3> <div class="tools"> <ul> <li class="edit"><a href="/ru:rewrite?do=edit" title="Править страницу [e]" rel="nofollow" accesskey="e"><span>Править страницу</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg></a></li><li class="revs"><a href="/ru:rewrite?do=revisions" title="История страницы [o]" rel="nofollow" accesskey="o"><span>История страницы</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M11 7v5.11l4.71 2.79.79-1.28-4-2.37V7m0-5C8.97 2 5.91 3.92 4.27 6.77L2 4.5V11h6.5L5.75 8.25C6.96 5.73 9.5 4 12.5 4a7.5 7.5 0 0 1 7.5 7.5 7.5 7.5 0 0 1-7.5 7.5c-3.27 0-6.03-2.09-7.06-5h-2.1c1.1 4.03 4.77 7 9.16 7 5.24 0 9.5-4.25 9.5-9.5A9.5 9.5 0 0 0 12.5 2z"/></svg></a></li><li class="backlink"><a href="/ru:rewrite?do=backlink" title="Ссылки сюда" rel="nofollow"><span>Ссылки сюда</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M10.59 13.41c.41.39.41 1.03 0 1.42-.39.39-1.03.39-1.42 0a5.003 5.003 0 0 1 0-7.07l3.54-3.54a5.003 5.003 0 0 1 7.07 0 5.003 5.003 0 0 1 0 7.07l-1.49 1.49c.01-.82-.12-1.64-.4-2.42l.47-.48a2.982 2.982 0 0 0 0-4.24 2.982 2.982 0 0 0-4.24 0l-3.53 3.53a2.982 2.982 0 0 0 0 4.24m2.82-4.24c.39-.39 1.03-.39 1.42 0a5.003 5.003 0 0 1 0 7.07l-3.54 3.54a5.003 5.003 0 0 1-7.07 0 5.003 5.003 0 0 1 0-7.07l1.49-1.49c-.01.82.12 1.64.4 2.43l-.47.47a2.982 2.982 0 0 0 0 4.24 2.982 2.982 0 0 0 4.24 0l3.53-3.53a2.982 2.982 0 0 0 0-4.24.973.973 0 0 1 0-1.42z"/></svg></a></li><li class="top"><a href="#dokuwiki__top" title="Наверх [t]" rel="nofollow" accesskey="t"><span>Наверх</span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg></a></li> </ul> </div> </nav> </div><!-- /wrapper --> <!-- ********** FOOTER ********** --> <footer id="dokuwiki__footer"><div class="pad"> <div class="license">Если не указано иное, содержимое этой вики предоставляется на условиях следующей лицензии: <bdi><a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license" class="urlextern">CC Attribution-Share Alike 4.0 International</a></bdi></div> <div class="buttons"> <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.en" rel="license"><img src="/lib/images/license/button/cc-by-sa.png" alt="CC Attribution-Share Alike 4.0 International" /></a> <a href="https://www.dokuwiki.org/donate" title="Donate" ><img src="/lib/tpl/dokuwiki/images/button-donate.gif" width="80" height="15" alt="Donate" /></a> <a href="https://php.net" title="Powered by PHP" ><img src="/lib/tpl/dokuwiki/images/button-php.gif" width="80" height="15" alt="Powered by PHP" /></a> <a href="//validator.w3.org/check/referer" title="Valid HTML5" ><img src="/lib/tpl/dokuwiki/images/button-html5.png" width="80" height="15" alt="Valid HTML5" /></a> <a href="//jigsaw.w3.org/css-validator/check/referer?profile=css3" title="Valid CSS" ><img src="/lib/tpl/dokuwiki/images/button-css.png" width="80" height="15" alt="Valid CSS" /></a> <a href="https://dokuwiki.org/" title="Driven by DokuWiki" ><img src="/lib/tpl/dokuwiki/images/button-dw.png" width="80" height="15" alt="Driven by DokuWiki" /></a> </div> <div style="margin-top: 2em; font-size:90%" class="dokuwiki"><div style="float:right"><a href="http://www.splitbrain.org/personal#imprint" style="float:right; text-decoration: none; color:#333">Imprint</a></div></div><!-- Include for DokuWiki site wide top bar --> <style type="text/css"> @media screen { body { padding-top: 30px; } #global__header { position: absolute; top: 0; left: 0; text-align: left; vertical-align: middle; line-height: 1.5; background-color: #333; box-shadow: 0 0 8px rgba(0,0,0,0.5); width: 100%; margin: 0; padding: 5px 20px; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; box-sizing: border-box; white-space: nowrap; overflow: hidden; } #global__header h2 { position: absolute; left: -99999em; top: 0; overflow: hidden; display: inline; } #global__header ul, #global__header li { margin: 0; padding: 0; list-style: none; display: inline; line-height: 1.5; } #global__header a { color: #bbb; text-decoration: none; margin-right: 20px; font-size: 14px; font-weight: normal; } #global__header a:hover, #global__header a:active, #global__header a:focus { color: #fff; text-decoration: underline; } #global__header form { float: right; margin: 0 0 0 20px; } #global__header input { background-color: #333; background-image: none; border: 1px solid #bbb; color: #fff; box-shadow: none; border-radius: 2px; margin: 0; line-height: normal; padding: 1px 0 1px 0; height: auto; } #global__header input.button { border: none; color: #bbb; } #global__header input.button:hover, #global__header input.button:active, #global__header input.button:focus { color: #fff; text-decoration: underline; } } /* /@media */ @media only screen and (min-width: 601px) { /* changes specific for www.dokuwiki.org */ #dokuwiki__header { padding-top: 3em; } #dokuwiki__usertools { top: 3em; } /* changes specific for bugs.dokuwiki.org */ div#container div#showtask { top: 40px; } } /* /@media */ @media only screen and (max-width: 600px) { body { padding-top: 0; } #global__header { position: static; white-space: normal; overflow: auto; } #global__header form { float: none; display: block; margin: 0 0 .4em; } } /* /@media */ @media print { #global__header { display: none; } } /* /@media */ </style> <div id="global__header"> <h2>Global DokuWiki Links</h2> <form method="get" action="https://search.dokuwiki.org/" target="_top"> <input type="text" name="q" title="Search all DokuWiki sites at once" class="input" /> <input type="submit" title="Search all DokuWiki sites at once" value="Search" class="button" /> </form> <ul> <li><a href="https://download.dokuwiki.org" title="Download the latest release" target="_top">Download</a></li> <li><a href="https://www.dokuwiki.org" title="Read the DokuWiki documentation" target="_top">Wiki</a></li> <li><a href="https://forum.dokuwiki.org" title="Ask questions in the DokuWiki forum" target="_top">Forum</a></li> <li><a href="https://irc.dokuwiki.org" title="Check IRC chat logs or join the chat" target="_top">IRC</a></li> <li><a href="https://github.com/splitbrain/dokuwiki/issues" title="Report and track bugs" target="_top">Bugs</a></li> <li><a href="https://translate.dokuwiki.org/" title="Help translating the DokuWiki interface" target="_top">Translate</a></li> <li><a href="https://github.com/splitbrain/dokuwiki" title="Access the most recent git commits" target="_top">Git</a></li> <li><a href="https://xref.dokuwiki.org/reference/dokuwiki/" title="Cross-Reference of the DokuWiki source code" target="_top">XRef</a></li> <li><a href="https://codesearch.dokuwiki.org/" title="Search through the sources of DokuWiki, plugins and templates" target="_top">Code Search</a></li> </ul> </div> <!-- end of DokuWiki top bar include --> </div></footer><!-- /footer --> </div></div><!-- /site --> <div class="no"><img src="/lib/exe/taskrunner.php?id=ru%3Arewrite&1740229407" width="2" height="1" alt="" /></div> <div id="screen__mode" class="no"></div></body> </html>