2010-10-01 10 views
1

Les versions actuelles de MediaWiki ont la première page accessible viaComment MediaWiki redirige-t-il les pages?

http://www.example.com/wiki/index.php/Main_Page 

Au lieu de l'ancienne version de

http://www.example.com/wiki/index.php?title=Main_Page 

Cette deuxième URL est littéralement comment le script PHP serait appelé dans la plupart des applications web occasionnels, mais l'URL ci-dessus est plus propre et plus souhaitable. Maintenant, je peux voir comment cela pourrait facilement être converti en une règle mod_rewrite Apache:

RewriteRule ^/index.php/(.*)$ /index.php?title=$1 

Mais il n'y a pas de fichier htaccess dans la valeur par défaut la configuration MediaWiki. Alors, comment font-ils la redirection?

+0

Ok, donc après quelques tests avec mon propre serveur Apache, il ressemble à la demande « /helloworld.php/foo/bar » est la même que la demande « /helloworld.php ». Mais, demander "helloworld.html/foo/bar" n'est pas la même chose que "/helloworld.html" (l'ancien donne un 404). Il y a donc quelque chose de spécial à propos des fichiers PHP servis depuis Apache. Cela me semble plutôt fragile. suppose que je devrais poser une autre question à ce sujet alors ... – MidnightLightning

+0

ne devrait pas être quelque chose de spécial. est-ce que le fichier "/helloworld.html" existe? sinon, il y aurait une erreur 404. Si le fichier existe, il doit charger le fichier html. –

+0

Dans mon exemple, "/helloworld.html" existe. Lors des tests sur mon serveur local, j'obtiens une charge correcte (HTTP 200) pour une requête de "/helloworld.html", et une réponse 404 pour "/helloworld.html/foobar" ou "/helloworld.html/foobar/" – MidnightLightning

Répondre

3

Vous ne savez pas si c'est ce qu'ils font, mais il n'est pas nécessaire de rediriger en utilisant un .htaccess. la page index.php est trouvée et ce script est ce qui est chargé. index.php obtient $ _SERVER ['REQUEST_URI'] et analyse cela dans la chaîne de requête.

+0

+1 Je suis à peu près sûr que, ou l'équivalent très proche, c'est exactement ce qu'ils font. – lonesomeday

+0

Je l'ai fait dans le passé, donc je sais que ça fonctionne. Juste ne pas se sentir à la recherche à travers mediawiki pour trouver où ils le font pour le confirmer. –

+0

Donc, quand apache reçoit une requête pour "/wiki/index.php/anything", il sait que "index.php" est le fichier à cause de la période? Donc, si quelqu'un (imprudemment) nommait un dossier avec une période au milieu, le contenu de celui-ci ne pourrait pas être servi via Apache, car il supposerait toujours que le dossier était le fichier cible, et le reste était la chaîne de requête? – MidnightLightning