переписать [DokuWiki]

  1. Инструкции на простом английском языке
  2. Дальнейшие детали для технически подкованных
  3. апаш
  4. Apachectl статус нарушен
  5. 404 не найдена ошибка
  6. IIS 7.0 или выше
  7. Nginx
  8. Заметки
  9. Чистый идентификатор сессии PHP

Эта страница беспорядок и должна быть переписана Эта страница беспорядок и должна быть переписана.

По умолчанию DokuWiki не перезаписывает URL-адреса, в результате чего URL-адреса выглядят следующим образом:

http://example.com/doku.php?id=page

Эти URL считаются некрасивыми и плохо индексируются некоторыми поисковыми системами.

Решение состоит в том, чтобы включить перезапись URL, которая по умолчанию отключена.

Инструкции на простом английском языке

меры

  1. Перейти к Admin

  2. Откройте диспетчер конфигурации

  3. Измените опцию Nice URLs на .htaccess (используйте find, это далеко внизу)

  4. Под ним отметьте опцию «Использовать косую черту как разделитель пространства имен в URL»

  5. Сохранить

  6. Затем, используя ftp или файловый менеджер, вам нужен доступ к папке / wiki /, которую вы создали при создании вики.

  7. Внутри вы найдете файл с именами .htaccess и .htaccess.dist. (если вы его не видите, убедитесь, что скрытые файлы видимы. Это может быть вариант, который вы можете использовать при входе в систему в зависимости от вашего хостинг-провайдера, или просто создайте файл с именем .htaccess и загрузите его)

  8. внутри файла .htaccess вставьте следующее (альтернативно раскомментируйте раздел в .htaccess.dist, затем переименуйте в .htaccess):

RewriteEngine на 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% {REQUEST_FILENAME}! -F RewriteCond % {REQUEST_FILENAME}! -D RewriteRule (. *) Doku.php? Id = $ 1 [QSA, L] RewriteRule ^ index.php $ doku.php

Это даст вам формат как www.myexample.com/wiki-article , Если у вас есть другой формат для вашего адреса, например, www.myexample.com/dokuwiki/wiki-article затем поместите эту строку сразу после RewriteEngine на

RewriteBase / dokuwiki

где / dokuwiki следует заменить на фактическое имя папки, которую вы используете.

Дальнейшие детали для технически подкованных

DokuWiki поддерживает два метода перезаписи URL-адресов, включенные через userewrite вариант. Один полагается на возможности перезаписи веб-сервера; другой обрабатывает переписанные URL-адреса внутри DokuWiki. В таблице ниже приведены эти параметры.

Значение Информация Пример URL 0 Перезапись URL не используется. Это по умолчанию. http://example.com/dokuwiki/doku.php?id=wiki:syntax 1 Перезапись выполняется веб-сервером. http://example.com/dokuwiki/wiki:syntax 2 Перезапись выполняется DokuWiki. http://example.com/dokuwiki/doku.php/wiki:syntax

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

Перезапись URL-адреса может быть включена по адресу? Do = admin & page = config # _advanced или в локальной строке файла conf / local.php, которая читает $ conf ['userewrite'] = N ;. N - это число 0, 1 или 2. По умолчанию это ноль без этой строки. Следуйте инструкциям по настройке ниже, чтобы выбрать какой-либо вариант.

Не забудьте установить следующее в Configuration Manager / start Не забудьте установить следующее в Configuration Manager / start? Do = admin & page = config

В противном случае правила перезаписи не будут полезны.

апаш

Перезапись URL-адресов в Apache осуществляется через модуль mod_rewrite Апач 1 или же Apache 2 ,

DokuWiki поставляется с файлом .htaccess.dist, который содержит необходимые правила перезаписи для режима 1.

Вот пример

RewriteEngine на RewriteBase / dokuwiki 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% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteRule (. *) doku.php? id = $ 1 [QSA, L] RewriteRule ^ index.php $ doku.php

В строке RewriteBase / dokuwiki вам может понадобиться заменить / dokuwiki на любой каталог, который вы используете в своем URL, чтобы попасть в вики. Если ваша вики появляется на верхнем уровне домена (например, http://example.com указывает на стартовую страницу вики, затем используйте следующую строку: RewriteBase /.

Вам также может понадобиться переименовать файл из .htaccess.dist в .htaccess.

Apachectl статус нарушен

Правило перезаписи Dokuwiki влияет на команду состояния apachectl и заставляет ее возвращать страницу dokuwiki 404 вместо страницы состояния сервера. Вы можете исправить это, поместив это в правила переписывания dokuwiki.

RewriteCond% {REQUEST_URI}! ^ / Server-status $

или создание пустого файла состояния сервера в корневой папке dokuwiki, где находится doku.php. Смотрите сообщение на форуме Apachectl статус нарушен с докувики

404 не найдена ошибка

IIS (или Microsoft Azure Web App)

Включите переписывание URL и вставьте соответствующий набор правил:

<rewrite> <rules> <rule name = "rule 1C" stopProcessing = "true"> <match url = "^ _ media /(.*)" /> <action type = "Rewrite" url = "/ lib / exe / fetch.php? media = {R: 1} "appendQueryString =" true "/> </ rule> <имя правила =" rule 2C "stopProcessing =" true "> <match url =" ^ _ detail /(.*) " /> <action type = "Rewrite" url = "/ lib / exe / detail.php? media = {R: 1}" appendQueryString = "true" /> </ rule> <rule name = "rule 3C" stopProcessing = "true"> <match url = "^ _ export /([^/]+)/(.*)" /> <action type = "Переписать" url = "/ doku.php? do = export_ {R: 1} & amp; id = {R: 2} "appendQueryString =" true "/> </ rule> <rule name =" rule 4C "stopProcessing =" true "> <match url =" ^ $ "/> <тип действия =" Перепишите "url =" / doku.php "/> <условия> <add input =" {REQUEST_FILENAME} "matchType =" IsFile "negate =" true "/> <add input =" {REQUEST_FILENAME} "matchType =" IsDirectory " negate = "true" /> </ condition> </ rule> <rule name = "rule 5C" stopProcessing = "true"> <match url = "(. *)" /> <action type = "Rewrite" url = "/doku.php?id= enjR:1}" appendQueryString = "true" /> <условия> <add input = "{REQUEST_ FILENAME} "matchType =" IsFile "negate =" true "/> <add input =" {REQUEST_FILENAME} "matchType =" IsDirectory "negate =" true "/> </ condition> </ rule> <rule name =" rule 6C "> <match url =" ^ index.php $ "/> <action type =" Rewrite "url =" / doku.php "/> </ rule> </ rules> </ rewrite>

Если вы используете Azure Web App , просто поместите эти строки в теги <system.webServer> в файле web.config (расположен в wwwroot вашего приложения).

IIS 7.0 или выше

IIS 7.0 и выше могут быть расширены с помощью модуля перезаписи URL 2.0, доступного от Microsoft для обоих x86 а также x64

Сохраните приведенные выше правила Apache в файл .htaccess, удалив строку «RewriteBase / dokuwiki». Это не требуется, так как мы будем добавлять правила непосредственно в корень вики.

В диспетчере IIS выберите папку Wiki, а в разделе IIS выберите «Перезапись URL-адреса» (если перед установкой у вас был открыт диспетчер, потребуется обновление).

В области действий справа выберите «Правила импорта».

Для вашего файла конфигурации выберите файл .htaccess и Импортируйте, это должно дать вам 6 преобразованных правил.

Наконец нажмите «Применить» на панели «Действия» с правой стороны.

Сконфигурируйте свою Wiki для использования правил .htaccess для перезаписи, и теперь вы должны увидеть, что ваши URL переписаны.

Nginx

Увидеть Nginx документация , В следующем примере корнем нашего сервера является / var / www, и мы извлекаем dokuwiki в / var / www / wiki.

сервер {слушай 80; имя_сервера example.com www.example.com; # максимальный размер загружаемого файла составляет 4 МБ - при необходимости измените client_max_body_size 4M; client_body_buffer_size 128k; root / var / www / wiki; index doku.php; location / {try_files $ uri $ uri / @dokuwiki; } location @dokuwiki {переписать ^ / _ media /(.*) /lib/exe/fetch.php?media=$1 last; переписать ^ / _ detail /(.*) /lib/exe/detail.php?media=$1 last; переписать ^ / _ export /([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last; переписать ^ / (?! lib /)(.*) /doku.php?id=$1&$args last; } location ~ \ .php $ {if (! -f $ request_filename) {return 404; } include fastcgi_params; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_param REDIRECT_STATUS 200; fastcgi_pass 127.0.0.1:9000; }}

Заметки

При использовании https необходимо установить переменную сервера HTTPS, чтобы разрешить правильное связывание в dokuwiki. Это можно сделать в разделе сервера с помощью:

fastcgi_param HTTPS включен;

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

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

В вашем файле conf / local.php добавьте или измените строку так, чтобы она гласила:

Эта опция не требует установки веб-сервера. Однако он опирается на функцию PATH_INFO стандарта CGI, реализованную Apache. IIS это известно, что не работает с этой настройкой. Тем не менее, новые версии IIS, кажется, работают с этим.

Чистый идентификатор сессии PHP

Несмотря на использование «чистых» URL, вы можете встретить параметр «DokuWiki» в URL, который выглядит следующим образом:

ID сессии PHP:

http://example.com/example?DokuWiki=c81a95369a66576982119e2a60b557a5

Этот параметр является идентификатором сессии PHP и автоматически добавляется PHP. Это совершенно не связано с переписыванием. Чтобы избежать этого, вы можете заставить PHP всегда использовать куки для сессий, установив параметр session.use_only_cookies для PHP.

Обычно это делается в конфигурационном файле php.ini:

session.use_only_cookies = 1

Вы также можете попробовать:

session.use_trans_sid = 0

Php?
Php?
Php?
Php?
Php?
Php?
Перезапись URL-адреса может быть включена по адресу?
Не забудьте установить следующее в Configuration Manager / start?
Php?
Php?