2017-09-27 1 views
0

Comment les CMS tels que MediaWiki, Drupal, Wordpress etc. affichent les bonnes pages lorsqu'une URL est pour un répertoire/fichier qui n'existe pas. Pour clarifier, si je vais à l'url https://en.wikipedia.org/wiki/Example, il n'y a pas de répertoire sur le serveur/wiki/Exemple de wikipedia, MediaWiki crée la page à partir de modèles et d'informations dans des bases de données, etc. Je demande comment le CMS "Hijacks" la demande pour ce répertoire/fichier afin de renvoyer sa propre page au lieu d'un 404.Comment envoyer des pages Web pour lesquelles les fichiers explicites n'existent pas

Je demande en ce qui concerne php car c'est ce que j'utilise et ce que la plupart des CMS semblent être principalement basé.

+0

cela s'appelle la réécriture d'url.Il peut être implémenté via la configuration du serveur web ou php directement. – Calimero

+0

Copie possible de [Comment puis-je créer une erreur 404 en PHP?] (Https://stackoverflow.com/questions/1381123/how-can-i-create-an-error-404-in-php) – GGO

+0

@Calimero Une recherche rapide pour ce terme semble me donner la plupart des informations que je recherche, fondamentalement changer les paramètres du serveur pour le permettre et dire où chercher, et avoir le fichier php ou autre le comprendre à partir de là. – SlipperyPete

Répondre

0

serveur Web (Apache par exemple, Nginx ...) a la possibilité pour récupérer l'URL demandée et la convertir en quelque chose d'autre, une autre URL. Le moyen le plus courant consiste à utiliser le fichier .htaccess placé dans le répertoire racine du site. Dans certains systèmes, les fichiers commençant par point (".") Sont masqués par défaut, vous devez donc activer quelque part quelque chose pour les voir du tout.

Il contient des règles (entre autres) sur la façon de reconnaître certains itinéraires ou ensembles d'itinéraires et que faire avec eux.

I.e. vous avez chemin « virtuel » comme:

/event/32 

Vous allez créer une règle pour attraper tous les chemins qui commence par «/événement/» et attrapez également partie après (« 32 ») et au lieu d'ouvrir ONU- répertoire existant, il appellera un script comme:

/event.php?event_id=32 

donc ce paramètre capturé a été envoyé en tant que paramètre get « event_id » à event.php script.

Pour ce chemin de recherche/remplacement et de capture, des expressions régulières sont utilisées.

Vous avez de nombreux tutoriels en ligne comment faire, juste google pour eux:

https://www.addedbytes.com/blog/url-rewriting-for-beginners

https://mediatemple.net/community/products/dv/204643270/using-htaccess-rewrite-rules

https://help.dreamhost.com/hc/en-us/articles/215747748-How-can-I-redirect-and-rewrite-my-URLs-with-an-htaccess-file-

....

configuration du serveur principal est placé dans un autre répertoire de serveur, le plus probablement accessible uniquement pour s erver admin. Mais ce fichier .htaccess est un moyen de permettre aux "utilisateurs communs" de faire quelques changements de configuration, qui ne s'appliqueront que pour le répertoire où ce fichier est placé et ses enfants. Mais vous pouvez aussi faire beaucoup d'autres choses avec le fichier .htaccess, c'est-à-dire envoyer des paramètres d'en-tête, autoriser/interdire l'accès à certains fichiers/répertoires, définir un mécanisme de connexion simple (mot de passe) et bien plus encore ...

+0

Merci pour votre réponse, j'étais juste en train d'écrire le mien mais je préférerais ne pas répondre à ma propre question et la vôtre est beaucoup plus complète pour les futurs lecteurs. – SlipperyPete