Mediawiki в ссылках Google App Engine отсутствует параметр заголовка
После установки и тестирования копии mediawiki на localhost с помощью dev_appserver.py я развернул установку в Google App Engine. Я внес некоторые изменения в файл LocalSettings.php, чтобы учесть различия между localhost и Google - в основном это база данных SQL и $wgServer. Я пытался запустить стандартную процедуру установки mw_config, но она так и не завершилась - остановился где-то во время создания таблицы (я думаю). Вместо этого я восстановил копию базы данных localhost в базу данных Google Cloud SQL.
Это почти работает; он может читать базу данных, регистрировать пользователя, сохранять изменения на странице... но есть странная проблема со ссылками между страницами. В ссылках на странице отсутствует часть '? Title=xxxx', например
/index.php/Special:UserLogin
вместо
/index.php?title=Special:UserLogin
Это делает его довольно непригодным для использования.
У кого-нибудь есть опыт работы с Mediawiki в Google App Engine (GAE)? Мне нужно знать, какие изменения конфигурации или изменения страницы мне нужно сделать, чтобы эти ссылки работали правильно.
LocalSettings.php
<?php
# This file was automatically generated by the MediaWiki 1.21.2
# installer. If you make manual changes, please keep track in case you
# need to recreate them later.
#
# See includes/DefaultSettings.php for all configurable settings
# and their default values, but don't forget to make changes in _this_
# file, not there.
#
# Further documentation for configuration settings may be found at:
# http://www.mediawiki.org/wiki/Manual:Configuration_settings
# Protect against web entry
if ( !defined( 'MEDIAWIKI' ) ) {
exit;
}
## Uncomment this to disable output compression
# $wgDisableOutputCompression = true;
$wgSitename = "Shattered Screens";
$wgMetaNamespace = "Shattered_Screens";
## 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
## (like /w/index.php/Page_title to /wiki/Page_title) please see:
## http://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "";
$wgScriptExtension = ".php";
## The protocol and server name to use in fully-qualified URLs
#$wgServer = "http://localhost:8080";
if(isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false) {
$wgServer = "http://wiki.shatteredscreens.com";
}else{
$wgServer = "http://localhost:8080";
}
## The relative URL path to the skins directory
$wgStylePath = "$wgScriptPath/skins";
## The relative URL path to the logo. Make sure you change this from the default,
## or else you'll overwrite your logo when you upgrade!
$wgLogo = "$wgStylePath/common/images/wiki.png";
## UPO means: this is also a user preference option
$wgEnableEmail = true;
$wgEnableUserEmail = true; # UPO
$wgEmergencyContact = "ivan.hawkes@shatteredscreens.com";
$wgPasswordSender = "ivan.hawkes@shatteredscreens.com";
$wgEnotifUserTalk = false; # UPO
$wgEnotifWatchlist = true; # UPO
$wgEmailAuthentication = true;
## Database settings
$wgDBtype = "mysql";
#$wgDBserver = "localhost";
$wgDBname = "mediawiki";
$wgDBuser = "someaccount";
$wgDBpassword = "somepassword";
# Database server settings for local / GAE
if(isset($_SERVER['SERVER_SOFTWARE']) && strpos($_SERVER['SERVER_SOFTWARE'],'Google App Engine') !== false) {
$wgDBserver = ":/cloudsql/shattered-screens-wiki:mediawiki";
}else{
$wgDBserver = "localhost";
}
# MySQL specific settings
$wgDBprefix = "";
# MySQL table options to use during installation or update
$wgDBTableOptions = "ENGINE=InnoDB, DEFAULT CHARSET=binary";
# Experimental charset support for MySQL 5.0.
$wgDBmysql5 = false;
## Shared memory settings
$wgMainCacheType = CACHE_NONE;
$wgMemCachedServers = array();
## To enable image uploads, make sure the 'images' directory
## is writable, then set this to true:
$wgEnableUploads = false;
#$wgUseImageMagick = true;
#$wgImageMagickConvertCommand = "/usr/bin/convert";
# InstantCommons allows wiki to use images from http://commons.wikimedia.org
$wgUseInstantCommons = false;
## If you use ImageMagick (or any other shell command) on a
## Linux server, this will need to be set to the name of an
## available UTF-8 locale
$wgShellLocale = "en_US.utf8";
## If you want to use image uploads under safe mode,
## create the directories images/archive, images/thumb and
## images/temp, and make them all writable. Then uncomment
## this, if it's not already uncommented:
#$wgHashedUploadDirectory = false;
## Set $wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publically accessible from the web.
#$wgCacheDirectory = "$IP/cache";
# Site language code, should be one of the list in ./languages/Names.php
$wgLanguageCode = "en-gb";
$wgSecretKey = "xxx";
# Site upgrade key. Must be set to a string (default provided) to turn on the
# web installer while LocalSettings.php is in place
$wgUpgradeKey = "xxx";
## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook', 'vector':
$wgDefaultSkin = "vector";
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
$wgRightsPage = ""; # Set to the title of a wiki page that describes your license/copyright
$wgRightsUrl = "";
$wgRightsText = "";
$wgRightsIcon = "";
# Path to the GNU diff3 utility. Used for conflict resolution.
$wgDiff3 = "/usr/bin/diff3";
# Query string length limit for ResourceLoader. You should only set this if
# your web server has a query string length limit (then set it to that limit),
# or if you have suhosin.get.max_value_length set in php.ini (then set it to
# that value)
$wgResourceLoaderMaxQueryLength = -1;
# The following permissions were set based on your choice in the installer
$wgGroupPermissions['*']['createaccount'] = false;
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['*']['read'] = false;
# End of automatically generated settings.
# Add more configuration options below.
app.yaml
application: shattered-screens-wiki
version: initialtest
runtime: php
api_version: 1
handlers:
# Static pages
- url: /(.*\.(htm$|html$|css$|js$))
static_files: mediawiki/\1
upload: mediawiki/(.*\.(htm$|html$|css$|js$))
application_readable: true
secure: always
# Serve images as static resources.
- url: /(.+\.(gif|png|jpg|css))$
static_files: mediawiki/\1
upload: mediawiki/.+\.(gif|png|jpg|css)$
application_readable: true
secure: always
# Misc files.
- url: /(.+\.(xsd|txt|))$
static_files: mediawiki/\1
upload: mediawiki/.+\.(xsd|txt)$
application_readable: true
secure: always
# Serve php5 scripts.
- url: /(.+\.php5)$
script: mediawiki/\1
# Serve php scripts.
- url: /(.+\.php)$
script: mediawiki/\1
3 ответа
Вы должны использовать $wgArticlePath
to set the format of internal links. Попробуйте установить его {$wgScript}?title=$1
/index.php/Special:UserLogin
is actually the default address structure for installations on non CGI servers, and would also work on most servers
Пытаться:
- url: /.*
script: mediawiki/index.php
В конце вашего app.yaml
файл, он будет гарантировать, что все другие запросы будут направлены в основной скрипт MediaWiki.
Лично мне больше нравятся следующие настройки из-за более дружественных URL для SEO.
$wgScriptPath = "/wiki"; // or /w/ like Wikipedia
$wgArticlePath = "$wgScriptPath/$1";
На самом деле MediaWiki может правильно проанализировать любую форму ссылок, если она указана в app.yaml.
Таким образом, вы можете установить
- url: /.*
script: mediawiki/index.php
или же
# Serve php5 scripts.
- url: /wiki/(.+\.php5)$
script: wiki/\1
# Serve php scripts.
- url: /wiki/(.+\.php)$
script: wiki/\1
# deal with the real urls
- url: (.*)/(w|W)iki/(.*)
script: wiki/index.php
secure: optional
Для первого варианта, недостатком является то, что вы не можете перенаправить неработающие ссылки на пользовательскую страницу 404.
У меня есть полный работающий экземпляр MediaWiki, работающий на Google App Engine здесь ( http://mediawiki-on-gae.appspot.com/). Есть и другая информация, которая может оказаться для вас полезной.