2010-04-27 3 views
1

Salut les gars heres la scène - Je construis une application web qui crée essentiellement des comptes pour tous les utilisateurs. À l'heure actuelle sa configuration comme celui-ci la structure du fichier:Comment configurer la réécriture mod pour cela?

root/index.php 
root/someotherfile.php 
root/images/image-sub-folder/image.jpg 
root/js/somejs.js 

Lorsque les utilisateurs créent un compte, ils choisissent un nom de groupe fixe et les utilisateurs peuvent se joindre à ce groupe. Au départ, je pensais avoir une zone de texte supplémentaire dans l'écran de connexion pour entrer dans le groupe auquel l'utilisateur appartient pour se connecter. Mais je voudrais plutôt avoir quelque chose comme des dossiers virtuels dans ce cas:

root/group-name/index.php 

je l'ai entendu peut être fait avec mod rewrite apache mais je ne suis pas sûr de savoir comment faire cela - toute aide ici?

Fondamentalement, au lieu d'avoir quelque chose comme & nom-groupe = yourGroupName ajouté à chaque page je voudrais juste quelque chose de la nature ci-dessus.

Répondre

2

Vous pouvez configurer Mod Rewrite dans un fichier .htaccess, par ex.

racine/.htaccess:

RewriteEngine On 

#make sure that urls which already represent files or directories are not rewritten 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

#update this if the files are not actually in /root 
RewriteBase /root 

RewriteRule ^([^/]+)/(.*\.php)$ $2?group-name=$1 [L,QSA] 

Ainsi, toute demande correspondant à /[groupname]/[php file] doit être réécrite à /[php file]?group-name=[groupname].

  • L signifie que c'est la dernière règle, donc si elle correspond à ne pas continuer à exécuter d'autres règles
  • QSA moyens append la chaîne de requête d'origine (si d'autres paramètres GET sont encore transmis au script PHP)

Vous pouvez remplacer le motif qui correspond au nom de groupe ([^/]+) par quelque chose de plus restrictif, par ex. ([a-zA-Z0-9_-]+).

Vous pouvez également placer la configuration dans l'un de vos fichiers de configuration Apache, ce qui peut être plus rapide que l'analyse du fichier .htaccess à chaque requête.

+0

Excellent comment puis-je le configurer afin qu'il saute certains dossiers comme img et css etc. – Ali

+0

@Ali: cela ne devrait pas être un problème, mais j'ai mis à jour ma réponse –

+0

Ne fonctionne pas :(J'obtiens une erreur 404. En fait, mon site est actuellement sur un sous-domaine, l'url est comme ceci: subdomain.domain.com/rootfolder/index.php ... il y a un autre fichier htaccess, mais ce n'est pas dans ce dossier racine et à la place dans le dossier racine de domaine réel de sites Web - J'en doute – Ali

Questions connexes