2009-06-24 9 views
0

Un de mes clients m'a demandé de créer une application Web en PHP, j'ai fini par utiliser Symfony. A la livraison, il m'a dit qu'il a distribué un logiciel avec une vue Web intégré pointant vers une URL hardcoded:Comment rediriger une requête vers un fichier PHP non existant vers un DIR existant de manière propre?

www.domain.com/dir/tools.php

Maintenant, il veut l'application Web à apparaître dans son Web View, mais le logiciel est utilisé par environ 400 clients, nous ne pouvons pas nous attendre à ce que l'URL codée en dur soit modifiée.

Comment pensez-vous que je peux le faire de façon propre:

  • Créer www.domain.com/dir/tools.php et utiliser une redirection? Lequel et comment?
  • Utiliser la réécriture d'URL? N'importe quel extrait apprécié, je n'ai aucune idée comment le faire.

Répondre

8

Apache mod_rewrite:

RewriteEngine on 
RewriteRule ^dir/tools\.php$ new_page.php [R=301] 

EDIT: Comme il est indiqué, cela va dans votre fichier .htaccess. La documentation mod_rewrite que j'ai liée contient plus d'informations. Corrigé

+1

+1 pour la réponse ... et la lecture de la question à travers (plus que moi: P –

+0

Cela semble intéressant. Pourquoi est-il préférable de définir une redirection avec un en-tête ('Location: mapage.php') dans tools.php. Dans quel fichier suis-je censé le mettre et avec tag? –

+4

@ e-satis - c'est plus rapide car Apache compile l'expression et n'a pas besoin d'invoquer PHP. Placez-le sous une directive dans le vhost ou simplement dans le corps principal de vhost. –

0

Utilisez la réécriture d'URL.

La réécriture d'URL est implémentée avec quelques lignes de configuration dans votre logiciel serveur Web. C'est pas implémenté dans votre propre application web, donc vous n'utiliserez pas PHP pour l'implémenter. Vous serez en train de dire à votre serveur web que toute requête qui viendra en demandant "/dir/tools.php" sera modifiée, avant même qu'elle n'atteigne votre application web PHP, pour demander l'URL que vous voulez qu'elle demande. Par exemple, vous pouvez spécifier que toute requête demandant "/dir/tools.php" soit réécrite pour demander "/ my-custom-dir/my-tools /" à la place. Chaque serveur Web implémente différemment la réécriture d'URL. Souvent, le serveur Web ne prend pas en charge cette fonctionnalité avec un ensemble de fonctionnalités prédéfinies, mais via un addon que vous pouvez installer. Vous devriez consulter la documentation de votre serveur Web pour savoir comment le configurer pour effectuer la réécriture d'URL.

1

Dans votre configuration Apache pour l'hôte ou dans un fichier .htaccess, vous pouvez faire une redirection:

Redirect 301 /dir/tools.php http://www.example.com/whatever 
Questions connexes