2009-08-16 11 views
2

Chaque fois qu'un utilisateur s'inscrit sur mon site, je voudrais qu'il ait son propre sous-répertoire avec son "nom d'utilisateur" enregistré. Chaque sous-répertoire utilisateur aura le même fichier "index.php" qui fera quelque chose.Créer des sous-répertoires dynamiques en utilisant htaccess et php

Par exemple: "/ utilisateurs/username1 /" et "/ utilisateurs/username2 /"

Si quelqu'un veut accéder au sous-répertoire ils simplement aller à: « www.example.com/users/ username1/"ou" www.example.com/users/username2/ "

La solution facile et désordonnée consisterait simplement à créer un sous-répertoire pour chaque utilisateur et à placer le même fichier" index.php "dans chaque répertoire. Mais pour moi, cela va seulement encombrer mon espace serveur et rendre mes répertoires volumineux.

Je voulais savoir si tout cela peut être fait en utilisant .htaccess? Puis-je créer un fichier "index.php" et un fichier ".htaccess" et les placer dans mon répertoire "/ users /"? Quel serait le code que je devrais placer dans mon fichier .htaccess ??

Si vous avez une meilleure façon de le faire s'il vous plaît faites le moi savoir. J'utilise Apache et PHP comme environnement de travail.

Merci

Répondre

0

Rendez-le virtuel. Il n'y a pas de sous-répertoires, vous pouvez utiliser mod_rewrite pour simuler cela.

Avec mod_rewrite vous pouvez faire/users/username1 conduire à /users.php?user=username1 par exemple. Tout est transparent pour le client, il ne remarquera pas ce qui se passe réellement.

6

Eh bien, par exemple, vous pouvez faire tout cela avec un htaccess comme ceci:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L] 
</IfModule> 

Ce qu'il fait:

  • commutateurs sur le moteur de réécriture
  • vérifie si un fichier demandé existe
  • Vérifie si un répertoire demandé existe
  • sinon, il redirige la requête vers votre index.ph principal p

Fondamentalement, cela signifie que si vous entrez l'URL tels que yourdomain.com/users/ivan/, vous demandez sera redirigé vers:

index.php?url=/users/ivan 

vous $ _GET [ 'url'] dans votre index.php et le diviser en morceaux.

C'est juste un exemple, il existe d'autres méthodes mod_rewrite pour ce faire.

0

En utilisant quelque chose comme ceci:

RewriteEngine On 
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 
You can customize RewriteRule as much as you want. 

Vous pouvez essentiellement taper dans un répertoire que vous voulez, et il sera redirigé vers votre page index.php.

Si vous voulez vous assurer que les répertoires existants ne sont pas redirigés, faites ceci:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

Si vous voulez limiter la portée, de sorte que seul un sous-répertoire de user/ est redirigé (similaire à débordement de la pile), simplement ajouter « utilisateur » au début de la règle:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^user/([\-_0-9A-Za-z]+)$ index.php?a=$1 [L] 

Et enfin, si vous voulez avoir un fichier individuel gérer toutes les demandes de l'utilisateur séparé de votre page réelle index.php:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^user/([\-_0-9A-Za-z]+)$ users.php?a=$1 [L] 

Ceci est une configuration très similaire que je utilise pour distribuer des fichiers CSS.

Note: Le répertoire sera contenu est $_GET['a']

Questions connexes