2010-07-03 5 views
0

Je voulais savoir s'il est possible de traiter un fichier php comme un répertoire de sorte que index.php/abc/def appelle vraiment index.php. L'index.php doit alors connaître le chemin du sous-répertoire (par exemple).Comment traiter un fichier php en tant que répertoire

Je recherche une solution PHP simple. Je sais que je pourrais utiliser mod_rewrite pour mapper le répertoire aux paramètres GET.

Répondre

3

Si je me souviens bien, vous devriez être capable d'analyser cette information à partir de $ _SERVER ['PHP_SELF']. Edit: Encore mieux, jetez un oeil à $ _SERVER ["PATH_INFO"].

+0

Je dois configurer le serveur pour que cela fonctionne, ai-je? – Mafi

+0

@Mafi généralement non, cela fonctionnera hors de la boîte sur un Apache normalement configuré. –

+0

Merci, c'est ce que j'ai cherché. – Mafi

1

Une solution PHP simple est impossible car ce que l'on appelle sera le fichier.

Le PHP dans le fichier ne se soucie pas où il est ou comment le fichier dans lequel il se trouve est appelé à des fins autres que d'inclure. Ce que vous cherchez est de convaincre le système d'exploitation de passer le/abc/def/comme paramètre au script ou d'obtenir que le serveur Web fasse la même chose (par exemple, mod_rewrite pour apache).

+0

Non true: La traduction de 'index.php/abc/def' en' index.php' fonctionne immédiatement sur Apache. C'est une technique très courante pour réécrire les URL en l'absence de mod_rewrite –

+1

Oui, mais c'est toujours apache, pas "pur PHP" comme dans quelque chose que vous pourriez écrire dans vos fichiers php et utiliser dans CLI et IIS ... –

3

Cela fonctionnera si la directive AcceptPathInfo d'Apache est activée, ce qui est la valeur par défaut. De l'manual:

Le traitement des demandes de l'information de chemin de fuite est déterminé par le gestionnaire responsable de la demande. Le gestionnaire principal pour les fichiers normaux rejette par défaut les requêtes PATH_INFO. Les gestionnaires qui servent des scripts, tels que cgi-script et isapi-handler, acceptent généralement PATH_INFO par défaut.

Vous pouvez interroger le chemin entré à l'aide de la directive $_SERVER["PATH_INFO"]. Vous devrez analyser les chemins vous-même dans le script.

+0

+1 Pour le référencement la directive Apache. Même si cette directive semble familière, elle ne m'est pas venue à l'esprit. –

Questions connexes