Oui, ce sont deux questions distinctes.
Première: supprimer l'extension .php
Il y a principalement deux façons de le faire.
- Activer la négociation de contenu lance MultiViews. Cela vous permettra de vous référer à d'autres ressources sans extension et même avoir plusieurs fichiers avec des noms similaires mais des extensions différentes et laissez Apache choisir le meilleur selon ce que le navigateur préfère. Voir le lien Vous pouvez l'activer avec
Options +MultiViews
dans un bloc <Directory> dans http.conf ou .htaccess si vous autorisez le remplacement pour cette option.
- Utilisez mod_rewrite. Une règle spécifique à votre cas pourrait être
RewriteRule ^upload$ upload.php
. Cela peut également être mis dans un bloc <Directory> dans http.conf ou .htaccess (si activé). Vous devez avoir activé mod_rewrite et le moteur de réécriture avec RewriteEngine on
.
secondes: nécessitent une authentification
Vous pouvez le faire à la fois avec PHP et Apache.
- Pour Apache, voir les documents here. Pour PHP, en utilisant l'authentification de base (attention, le mot de passe sera envoyé au serveur en texte clair et à moins que vous n'utilisiez https, il peut être snobé par quelqu'un qui regarde votre trafic), vous pouvez faire quelque chose comme ça:
function send401() {
$realm = "Credentials for upload";
header('WWW-Authenticate: Basic realm="'.$realm.'"');
header('HTTP/1.1 401 Unauthorized');
die();
}
function verify_credentials($user, $password) {
//check user and password here. Return true or false
return true;
}
if (!array_key_exists('PHP_AUTH_USER',$_SERVER) ||
!array_key_exists('PHP_AUTH_PW',$_SERVER)) {
send401();
}
elseif (!verify_credentials($_SERVER['PHP_AUTH_USER'],
$_SERVER['PHP_AUTH_PW']))
send401();
//if it gets here, the user was successfully authenticated
+1 Pour les détails. Mais n'utilisez pas l'authentification de base; utilisez plutôt l'authentification Digest Access. – Gumbo