Mediawiki Скрытие дополнительного параметра URL - PullRequest
0 голосов
/ 04 мая 2018

У меня есть расширение Mediawiki, для работы которого требуется параметр «dbid» в URL. ULR для обычных страниц имеют формат / w / Main_Page, и там, где предполагается запускать расширение, / w / Page? Dbid = 1234. Теперь я пытался скрыть dbid = с / (косая черта). Я попытался настроить htaccess на

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/(.*)$ index.php?title=$1&dbid=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

Но это работает только до тех пор, пока я не включаю короткие вики в вики ($ wgArticlePath = "{$ wgScriptPath} / $ 1";). Если я это сделаю, вики продолжит думать, что «Page / 1234» - это название. Я нашел это https://www.mediawiki.org/wiki/Manual:Entry_point_routing но я понятия не имею, как его использовать.

Я сделал простое расширение, просто

$wgHooks['WebRequestPathInfoRouter'][] = 'ePathRouter';
function ePathRouter( $router ) {
 $router->addStrict( "/Page/100650030", array( 'title' => 'Main_Page' ) );
 return true;
}

, чтобы просто проверить, собирается ли он перенаправить "/ Page / 100650030" на "Main_Page", но он вообще не работает.

Итак, мой вопрос, как мне использовать этот хук?

1 Ответ

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

После того, как я отправил этот вопрос, мне удалось выяснить это.

Как я уже говорил, https://www.mediawiki.org/wiki/Manual:Entry_point_routing - это путь.

Я сделал расширение, которое содержит только:

$wgHooks['WebRequestPathInfoRouter'][] = 'MyExtensionURLRouter';
function MyExtensionURLRouter( $router ) {
  $router->add( 'w/Page/$1', array( 'title' => 'Page', 'dbid' => '$1' ) );
  return true;
}

Именно с этим, когда вы пытаетесь получить доступ к странице под названием «Страница / 100», вам, фактически, будет представлено содержимое страницы под названием «Страница» и номер / текст / что угодно после косая черта будет значением параметра "dbid".

Вы должны помнить, чтобы изменить 'w / Page / $ 1'. Если в вашей вики есть URL-адреса, такие как https://mywiki.wiki/w/Main_Page,, вы должны начать ее с "w /", если ваши URL-адреса https://mywiki.wiki/Main_Page,, вы должны начать с "Page /" (или любой другой страницы, очевидно).

Для htaccess придерживайтесь «по умолчанию» для коротких URL-адресов. В моем случае

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [L]

и настройки коротких URL-адресов в LocalSettings.php:

$wgScriptExtension = ".php";
$wgArticlePath = "{$wgScriptPath}/$1";
...