Manuel:URL courte/Apache
Certaines parties de cette page (celles relatives à Apache2 configuration instructions) sont obsolètes. |
![](http://upload.wikimedia.org/wikipedia/mediawiki/8/83/ENWP-ShortURL.png)
Ces instructions vous aident à configurer les URLs courtes sous Apache. Le serveur web LiteSpeed est compatible avec Apache et peut être configuré de la même manière. Pour obtenir des informations sur ce que sont les URL courtes ou sur la configuration pour d'autres types de serveurs, voir Manuel:URL courte . Si vous ne savez pas quel serveur web vous utilisez, il y a de fortes chances que votre hôte utilise Apache.
Configuration
Avant de commencer, vous devez décider quel forme d'URL courte vous souhaitez utiliser.
Dans ce manuel, nous recommandons et supposons ce qui suit. Rappelez vous d'utiliser vos propres chemins s'ils sont différents.
- Le dossier MediaWiki est localisé sur :
/w
- Le format désiré d'URL courte est :
/wiki/Page_title
Configuration du serveur
Trouver le bon fichier
La manière recommandée pour déclarer les URLs courtes dans Apache se fait en modifiant les fichiers de configuration de Apache.
Cela demande que vous ayez accès à la configuration du serveur.
Si vous êtes sur un hôte partagé, vous ne l'avez probablement pas et vous devrez utiliser un ficher .htaccess
à la place.
Utiliser des fichiers .htaccess
est moins efficace et ne vous procure pas autant de contrôle pour des configurations complexes avec plusieurs domaines, mais les fichiers .htaccess
sont assez puissants pour paramètrer la plupart des configurations d'URL courtes.
Les utilisatuers de LiteSpeed doivent utiliser la méthode .htaccess
.
Utilisez les instructions de l'une des deux sections suivantes, selon que vous avez un accès root ou que vous devez utiliser .htaccess
à la place.
Trouver le fichier de configuration Apache (accès root)
Le fichier de configuration correct à modifier pour les configurations root peut se trouver à différents endroits.
Le fichier de configuration correct à éditer est celui de /etc/apache2/sites-available/
, dans lequel la configuration de votre wiki a été paramétrée.
Le plupart des distributions Linux configurent Apache en initialisant le contenu des répertoires sites-available/
et sites-enabled/
.
Si vous n'en n'avez pas configuré et que vous utilisez le /var/www
par défaut pour la configuration de votre wiki, alors vous pouvez modifier /etc/apache2/sites-available/default
.
N'oubliez pas d'autoriser les réécrasements par AllowOverride All
dans /etc/apache2/apache2.conf
.
Par défaut, il est désactivé dans Ubuntu 12.04 et Ubuntu 12.10.
Si votre distribution ne possède pas cess dossiers, alors il vous faut modifier directement le fichier de configuration Apache.
Ce fichier doit être dans /etc/apache2/apache2.conf
.
Remarquez qu'auparavent, il s'appelait httpd.conf
, et si vous avez un httpd.conf
mais pas de apache2.conf
, alors httpd.conf
est celui que vous devez modifier.
Si votre configuration Apache ne fait pas partie de ces points vous devez consulter la documentation pour tout système que vous avez utilisé pour installer Apache, et trouver l'emplacement du fichier de configuration Apache.
Si vous êtes sur un hôte partagé sans accès aux fichiers de configuration Apache, vous devez utiliser un fichier .htaccess
à la place.
Dans un fichier de configuration Apache vous allez probablement trouver un bloc VirtualHost contenant votre wiki. Si vous n'en n'avez pas, c'est l'endroit où vous placerez vos règles de réécriture. Le fichier de configuration RewriteRule n'hérite pas, donc ne placez pas ces paramètres de configuration dans la configuration globale si vous utilisez un VirtualHost.
Après avoir initialisé les paramètres comme ci-dessus dans Apache, vous devrez le redémarrer afin qu'il prenne en compte la nouvelle configuration.
- Si vous utilisez Plesk ou cPanel, ils doivent avoir une méthode pour redémarrer le serveur.
- A partir de la ligne de commande, la commande est habituellement similaire à
apache2ctl graceful
,apachectl graceful
,/etc/init.d/apache2 restart
ou comme sur les dernières versions de Fedorasystemctl reload httpd.service
. Ces commandes doivent être exécutées en tant que root, habituellement en les préfixant avecsudo ...
.
Où mettre .htaccess ?
AllowOverride
vérifie si les fichiers .htaccess peuvent contrôler la configuration du serveur. Si ces règles de réécriture sont sans effet, vous devez peut-être modifier les paramètres de AllowOverride
dans la configuration Apache pour y inclure FileInfo
. Il faut également Options FollowSymLinks
pour le répertoire.Si vous utilisez un fichier .htaccess
vous devrez modifier ou créer le fichier. Cherchez le chemin qui contient à la fois le chemin de votre script et votre chemin virtuel. Habituellement il s'agit du répertoire racine de votre site, mais voyons quelques exemples :
wgScript | Exemple | wgArticlePath | Exemple | chemin .htaccess |
---|---|---|---|---|
/w/index.php | https://www.mediawiki.org/w/index.php?... | /wiki/Page_title | https://www.mediawiki.org/wiki/Manual:Short_URL | /.htaccess |
/w/index.php | https://www.mediawiki.org/w/index.php?... | /Page_title | https://www.mediawiki.org/Manual:Short_URL | /.htaccess |
/mediawiki/index.php | https://www.mediawiki.org/mediawiki/index.php?... | /view/Article | https://www.mediawiki.org/view/Manual:Short_URL | /.htaccess |
/mysite/mw/index.php | https://www.mediawiki.org/mysite/mw/index.php?... | /mysite/view/Page_title | https://www.mediawiki.org/mysite/view/Manual:Short_URL | /mysite/.htaccess |
Notez bien que si vous voulez faire une redirection à partir du domaine principal vers la page d'accueil de votre wiki (par exemple http://example.org/ → http://example.org/wiki/Main_Page), vous devez toujours configurer le fichier .htaccess
au début même si les autres répertoires se trouvent imbriqués plus profondément.
Déclarer les règles de réécriture
Il est plus facile de comprendre la suite de cette section après un coup d’œil rapide à la syntaxe Apache, mais cet aperçu ne remplace pas la documentation complète Apache :
RewriteCond TestString CondPattern
RewriteRule Pattern Substitution [flags]
La directive RewriteCond
définit une condition qui doit être vraie avant qu'une directive RewriteRule qui la suit, soit appliquée.
Une ou plusieurs directives RewriteCond peuvent précéder une directive RewriteRule, et toutes les directives RewriteCond qui précèdent une RewriteRule doivent être vraies avant que cette règle soit appliquée à un URI.
Dans les exemples qui suivent, TestString
prend la forme d'une référence à des variables serveur, par exemple %{ NAME_OF_VARIABLE }
.
Bien qu'il existe de nombreux CondPatterns
, les exemples qui suivent utilisent -f
(true lorsque TestString est un fichier standard) et -d
(true lorsque TestString est un répertoire), et ils sont précédés du symbole de négation, !
.
La directive RewriteRule
peut être appelée à la fois dans le fichier httpd.conf
et dans n'importe quel fichier .htaccess
, mais lorsque la règle de réécriture apparaît dans les fichiers .htaccess, le contexte implicite par répertoire affecte le Pattern
de la règle car les règles sont relatives au répertoire courant. Dans les fichiers .htaccess
, les Pattern
ne sont pas relatifs à l'URI d'origine complète. Pour les fichiers .htaccess
, les Pattern
ne doivent jamais commencer par une barre oblique avant /
car la sous-chaîne de l'URI ne commencera jamais par un /
. Les exemples qui suivent utilisent l'indicateur L
dont la signification est Arrêtez immédiatement le processus de réécriture et n'appliquez plus de règles.
mod_rewrite
doit être activé sur les serveurs Apache ou LiteSpeed pour les exemples ci-après.La première règle dont vous devez disposer dans votre configuration est celle qui permet d'activer le moteur de réécriture :
RewriteEngine On
Maintenant il nous faut une règle pour que le chemin vers votre article soit un chemin virtuel pointant vers index.php. Vérifiez bien de remplacer /wiki
et /w/index.php
par les chemins que vous avez choisis au début (s'ils sont différents).
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
?title=$1
ou quelque chose de similaire dans la réécriture. En incluant une requête, la construction de MediaWiki fera qu'il va gérer sa réécriture et créera des bogues sur votre wiki parce que les réécritures de Apache auront été cassées.[1] L'objectif ici est créer des alias de chemins vers /index.php puis de laisser MediaWiki lui-même prendre soin de l'analyse syntaxique et du routage de l'url, en fonction de la configuration trouvée dans LocalSettings.php.Si vous utilisez une URL racine au lieu d'une URL courte classique, vous devrez utiliser à la place ce qui suit (pour vous assurer que les fichiers et les répertoires existants ne sont pas vus comme des articles, par exemple « /index.php
» « /images
» etc.) :
RewriteCond %{REQUEST_URI} !^/w/rest\.php
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-d
RewriteRule ^(.*)$ %{DOCUMENT_ROOT}/w/index.php [L]
/mywiki/index.php
et /mywiki/Article
il vous faudra aussi utiliser les deux mêmes lignes RewriteCond dans votre RewriteRule. Néanmoins, remarquez qu'il n'y a pas de raison valable pour reconfigurer votre wiki de cette façon. Si votre chemin d'articles est déjà un sous-répertoire il suffit de déplacer le chemin des scripts du wiki vers un autre répertoire. Tels que /w/index.php
et /mywiki/Article
ou /my/index.php
et /mywiki/Article
.Quelques fois les exemples ci-dessus ne fonctionnenent pas. Mais ceux qui suivent peuvent convenir (vous ne pouvez pas modifier un .htaccess
, il vous faut un accès root) :
Alias /wiki /path/to/your/webroot/w/index.php
Optionnellement, vous pouvez inclure une règle pour afficher la page d'accueil sur le chemin lui-même, pour simplifier la navigation lorsque les utilisateurs visitent les URLs sans avoir de titre de page spécifié :
# Redirection/Vers la page d'accueil
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
Le résultat final devrait être similaire à ceci :
## https://www.mediawiki.org/wiki/Manual:Short_URL/Apache
# Activer le moteur de réécriture
RewriteEngine On
# URL courte pour les pages du wiki
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
# Redirection/Vers la page d'accueil
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
ou si vous avez utilisé la déclaration avec l'alias :
## https://www.mediawiki.org/wiki/Manual:Short_URL/Apache
Alias /wiki /path/to/your/webroot/w/index.php
# Activer le moteur de réécriture
RewriteEngine On
# Redirection/Vers la page d'accueil
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
^/?
de la configuration est important car différents paramètres Apache utilisent différentes expressions régulières. Certains veulent que vous utilisiez ^wiki/
, et d'autres ^/wiki/
. Le ?
dans /?
permet que cette règle fonctionne dans les deux contextes.%{DOCUMENT_ROOT}
de la configuration permet à Apache d'avoir le chemin correct non ambigü. Néanmoins il ne fonctionne pas sur certains hôtes gratuits configurés trop misérablement. Si vous obtenez des erreurs 404 ou 403 avec vos directives RewriteRules, supprimez les parties %{DOCUMENT_ROOT}
et réessayez.RewriteEngine
:Options +FollowSymLinks
[L]
en [PT,L]
) pour transmettre la requête au gestionnaire suivant - mod_alias, ce qui redirigera correctement la requête, jusqu'au débordement de pileLocalSettings.php
Nous avons besoin de déclarer les configurations suivantes dans LocalSettings.php :
## https://www.mediawiki.org/wiki/Manual:Short_URL
$wgScriptPath = "/w"; // cela devrait déjà être configuré de cette manière
$wgArticlePath = "/wiki/$1";
Si vous obtenez une page d'erreur interne « Internal error » indiquant qu'une boucle de redirection a été détectée « Redirect loop detected » après que vous ayez terminé la configuration, il est possible que vous utilisez autre chose que mod_php
. Si c'est le cas, vous devez activer explicitement les URLs courtes en utilisant la ligne suivante dans votre fichier « LocalSettings.php » :
$wgUsePathInfo = true;
S'il y a encore des erreurs internal error vérifiez les fichiers des journaux concernant votre serveur. Il est possible qu'il faille activer le module mod_rewrite
.
Instructions rapides
Voici un résumé de ce qu'il faut faire si vous avez suivi scrupuleusement les recommandations de MediaWiki. Si vous voulez faire autre chose, vous devez lire tous les détails ci-dessus.
- https://example.com/wiki/Main_Page (emplacement de l'URL)
- /home/me/public_html/mediawiki/w/index.html (emplacement de index.html)
- /home/me/public_html/mediawiki/.htaccess (emplacement de .htaccess)
Notez bien que le fichier .htaccess ne se trouve pas dans le répertoire w
, mais dans celui de niveau supérieur.
Code source .htaccess
RewriteEngine On
# règle de réécriture principale
RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]
# Redirection / vers la page d'accueil
RewriteRule ^/*$ %{DOCUMENT_ROOT}/w/index.php [L]
Code source LocalSettings.php
$wgScriptPath = "/w";
$wgArticlePath = "/wiki/$1";
Assistant en ligne
Il est possible que cet assistant va aider les gens à générer les URLs courtes nécessaires. (NOTE: ceci doit être testé, sinon supprimez la section.)
Un assistant automatique (nécessite MediaWiki 1.17 ou plus récent) peut aider :
Si vous voulez simplement configurer votre wiki rapidement, ou que le guide vous semble trop perturbant, alors vous pouvez essayer cet outil en priorité.
Si vous faites cela, veuillez noter que vous devrez modifier ou créer un fichier .htaccess.
Si vous le recréez à nouveau, veuillez continuer à lire cet article sur où placer le fichier .htaccess, et noter que ce fichier sera probablement dans un dossier différent de l'autre fichier qui devra être modifié (LocalSettings.php), et qui se trouve dans le dossier d'installation (/w si vous avez suivi les recommandations de MediaWiki).
Notez aussi que l'utilisation de cet assistant ne fonctionnera pas avec des wikis privés ou dotés d'un pare-feu.
Dans ce cas, vous pouvez encore l'essayer en rendant temporairement votre wiki public en initialisant $wgGroupPermissions['*']['read']
à true
.
Rappelez-vous de revenir en arrière sur false
une fois que vous avez terminé.
Voir aussi