Supprimer l'extension .php avec PHP

voix
3

Je pourrais utiliser de l'aide ici. J'utilise ceci pour corriger mon URL , mais je ne peux pas comprendre comment supprimer l'extension .php. L'URL ressemble à ceci maintenant: http://mydomain.com/page.php/foo/123/bar/456

function decode_URL_parameters() {
   $path = @$_SERVER['PATH_INFO'];
   $url_array=explode('/',$path);

   array_shift($url_array);

   while ($url_array) {
      $_GET[$url_array[0]] = $url_array[1];
      array_shift($url_array);
      array_shift($url_array);
   }
}

Des idées?

/ Tobias

Créé 26/08/2009 à 22:47
source utilisateur
Dans d'autres langues...                            


4 réponses

voix
5

Si vous êtes au service via Apache, vous aurez envie de regarder mod_rewrite.

L' utilisation mod_rewrite, vous pouvez modifier la façon dont les URL sont mises en correspondance avec les points terminaux réels de votre application. Pour votre exemple, vous voulez quelque chose comme ceci:

RewriteEngine on 
RewriteRule ^/?page/(.*)$ page.php/$1 [L]

Cette page a d'autres exemples simples.

Créé 26/08/2009 à 23:02
source utilisateur

voix
3

Vous avez probablement configuré votre serveur web pour laisser php gérer toutes les demandes de fichiers ayant l'extension .php. Supposons que c'est un apache. Ensuite, il y a quelque chose comme

AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt

ou

<FilesMatch \.php$>
  SetHandler application/x-httpd-php
</FilesMatch>

dans l' un des fichiers de configuration. La seconde indique que apache tous les fichiers qui correspondent au masque .php doit être manipulé $ par le module / gestionnaire qui a enregistré pour l'application de type / x-httpd-php (php).
Mais vous ne devez pas limiter à .php fichiers. Vous pouvez utiliser un masque de fichier que vous voulez. Ou une autre directive comme par exemple <Répertoire> .
Si tous les fichiers dans un répertoire spécifique (et peut - être ses sous - répertoires) sont des scripts php vous pouvez même mettre un fichier .htaccess dans ce répertoire avec

ForceType application/x-httpd-php

et l'apache traitera tout fichier en tant que script php. ForceType remplace tous les paramètres du gestionnaire précédent.

Créé 26/08/2009 à 23:18
source utilisateur

voix
2

Sous Apache, placez un fichier .htaccess dans le répertoire qui contient le fichier page.php.

Si les fichiers page.php contient dans le répertoire racine (c.-à-/page.php), puis ajoutez simplement dans votre .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /page.php?/$1 [L]

Si toutefois, les fichiers page.php en contient permet de dire /a_folder/another_folder/page.php

Ensuite, vous aurez besoin de mettre cela dans votre .htaccess:

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /a_folder/another_folder/page.php?/$1 [L]

Etc.

Qu'est-ce que cela est, il supprime simplement page.php de l'URL. Donc, dans votre cas:

Au lieu de: http://mydomain.com/page.php/foo/123/bar/456 Vous pouvez utiliser: htp: //mydomain.com/foo/123/bar/456

S'amuser.

Créé 26/08/2009 à 23:26
source utilisateur

voix
0

merci pour toutes les réponses, mais si je l'utilise mod_rewrite je Haft pour faire de nouvelles règles (et beaucoup) à chaque fois que je crée une nouvelle page. Et il y a beaucoup d'entre eux :)

Peut-être que si je rediriger tous les urls à mon index.php avec .htaccess puis fixer mon URL là, comme wordpress:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Créé 27/08/2009 à 00:17
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more