Установка поддиректории Mediawiki - PullRequest
0 голосов
/ 14 января 2012

Возможные дубликаты: MediaWiki в подкаталоге и субдомене (Однако ни ответа, ни каких-либо ответов, предлагающих помощь)

Хорошо, я пытаюсь настроить MediaWiki для установки в подкаталог. Ранее я устанавливал его в основной домен на http://www.example.com/ с mod_rewrite, используя короткий URL-адрес /wiki/Main_Title.

Как примечание, я также на HostGator виртуальный хостинг, который имеет специальные правила для коротких URL.

Моя структура каталогов такова:

  • / (site root; location of .htaccess)
  • /wiki/ (mediawiki root; location of LocalSettings.php)

Вот что я попробовал,

.htaccess:

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

/wiki/LocalSettings.php:

## The URL base path to the directory containing the wiki;
## defaults for all runtime URL paths are based off of this.
## For more information on customizing the URLs please see:
## http://www.mediawiki.org/wiki/Manual:Short_URL
##
$wgScriptPath       = "/wiki";
$wgScriptExtension  = ".php";
$wgArticlePath      = "$wgScriptPath/$1";

Однако я ничего не понимаю. Я просто получаю ошибку 403/Forbidden; нет 500 Internal Server Error, просто 403 - url http://www.example.com/. Как будто ничего не делается. Я ударился головой о стену, пытаясь понять это. Любая помощь приветствуется.

Заранее спасибо!

Ответы [ 4 ]

1 голос
/ 15 января 2012

Какова цель

RewriteRule ^(.*)\&(.*)$ $1\%26$2

Вы полностью потеряли меня в этом.Любой URI со вторым параметром будет зацикливаться бесконечно и генерировать возвращаемое состояние 500.

Если вы читаете документацию Rewrite:

Что сопоставляется?

... Если вы хотите сопоставить строку запроса ..., используйте RewriteCond с переменными ... %{QUERY_STRING}

Обычно & является частьюпараметр запроса.Он может появиться в шаблоне RewriteRule в случае неправильного URI (например, fred&q=1).По умолчанию mod_rewrite будет обрабатывать это как fred?q=1, но это преобразует его в экранированный вариант% 26, так что это будет передаваться как заголовок fred&q=1 в MW (что, кстати, является недопустимым заголовком MW).Я думаю, что вы должны избавиться от этого или хотя бы понять, что вы пытаетесь сделать здесь.

Последняя строка должна быть

RewriteRule ^wiki/(.+) wiki/index.php?title=$1 [PT,L,QSA]

и сохранить RewriteBase, иначе mod_rewrite можетсмутиться.

Это должно работать нормально: -)

0 голосов
/ 24 мая 2018

Я пробовал разные решения, и то, что мне помогало, меняло .htaccess в подпапке mediawiki на

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wikifolder/index.php [L]
</IfModule>
0 голосов
/ 15 января 2012

Мой билет на HostGator решил проблему, хотя и без посторонней помощи. Я надеялся на одиночное .htaccess решение, а не на двойное .htaccess перенаправление / перезапись. Однако вот мое решение.

/:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^.*$ http://www.example.com/wiki/

/wiki/:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php?title=$1 [L,QSA]
0 голосов
/ 14 января 2012

Вы на правильном пути ... если вы находитесь в общей среде, попробуйте следующее:

RewriteEngine on
# Comment to force base to be the subdir:
# RewriteBase /
RewriteRule ^(.*)\&(.*)$ $1\%26$2
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^wiki/(.+)$ ./wiki/index.php?title=$1 [PT,L,QSA]

Два совета:

Если вы 'не в размещенной среде (= если это ваш собственный сервер, и вы можете изменять виртуальные хосты, а не только файлы .htaccess), попробуйте использовать директиву RewriteLog: это поможет вам отследить такие проблемы:

# Trace:
# (!) file gets big quickly, remove in prod environments:
RewriteLog "/web/logs/mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On

Мой любимый инструмент для проверки регулярных выражений:

http://www.quanetic.com/Regex (не забудьте выбрать ereg (POSIX) вместо preg (PCRE)!)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...