Voici ce que tu dois faire.
-
Tu avais modifié le fichier /etc/apache2/sites-avaible/default.
=> Il ne fallait pas le modifier, car c’est le virtualhost par défaut du serveur web,
il n’est donc pas fait pour les userdirs. Donc remet comme c’était avant.
-
En root, activer le module user_dir en tapant :
# a2enmod userdir
- Ensuite, activer php pour userdir en commentant le paramètre php_admin_value engine Off dans le fichier /etc/apache2/mods-available/php5.conf :
...
<IfModule mod_userdir.c>
<Directory /home/*/public_html>
#Je commente la ligne ci-dessous pour activer php pour userdir
#php_admin_value engine Off
</Directory>
</IfModule>
...
Remarque importante :
As-tu remarqué dans ce fichier la ligne <Directory /home//public_html> ?
=> cela veut dire que par défaut, les sites des utilisateurs unix doivent être dans /home//public_html.
Donc pour l’utilisateur tony, le site de l’utilisateur tony doit être dans le dossier /home/tony/public_html.
Donc il faudra créer ce dossier public_html plus tard.
- Ensuite donner à userdir la possibilité d’utiliser les fichiers .htaccess en ajoutant All à la ligne AllowOverride FileInfo AuthConfig Limit Indexes dans le fichier /etc/apache2/mods-available/userdir.conf, comme ceci :
AllowOverride FileInfo AuthConfig Limit Indexes All
- Ensuite activons le module rewrite pour que apache puisse utiliser la réécriture d’url via les .htaccess :
a2enmod rewrite
- Ensuite recharger et redémarrer apache pour que apache prennent en compte toutes les modifications que nous venons de faire :
/etc/init.d/apache2 reload;/etc/init.d/apache2 restart
- Ensuite testons :
1ère test : vérifier que l’userdir est bien activé pour l’utilisateur tony.
Pour cela, ne te mets plus en root, mais mets-toi en utilisateur tony (su tony), puis créer un dossier public_html dans /home/tony/.
Ensuite créer dans ce dossier /home/tony/public_html/ un fichier index.php avec un contenu banal (par exemple <?php echo "test";?>, puis tapes dans ton navigateur préféré l’adresse localhost/~tony/.
La page web de index.php devrait s’afficher correctement.
2ème test : vérifier que l’utilisation du fichier .htaccess est possible pour l’utilisateur tony.
Pour cela, toujours en tant que utilisateur tony, créer un fichier .htaccess dans /home/tony/public_html, et mets les directives de base de la réécriture d’url :
Contenu du fichier /home/tony/.htaccess :
Options +FollowSymLinks
RewriteEngine On
Et comme les urls réécrites du site auront comme base localhost/~tony/, alors on ajoute cette ligne dans
ce fichier .htaccess :
RewriteBase /~tony/
Ensuite, on peut mettre les réécriture d’urls dans ce fichier .htaccess :
Pour localhost/~tony/rewrite/produit/pdt1-1, ce serait :
RewriteRule rewrite/produit/([a-zA-Z0-9\-]+)-([0-9]+) rewrite/produit/produit.php?u=$1&a=$2 [NC,L]
=> Bien sûr, les dossiers rewrite et produits doivent être présent dans dans le dossier /home/tony/public_html/,
ainsi que le fichier produit.php (donc le chemin complet est /home/tony/public_html/rewrite/produit/produit.php).
Donc le fichier .htaccess complet dans /home/tony/public_html devrait être :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /~tony/
RewriteRule rewrite/produit/([a-zA-Z0-9\-]+)-([0-9]+) rewrite/produit/produit.php?u=$1&a=$2 [NC,L]
Puis tapes dans ton navigateur localhost/~tony/rewrite/produit/pdt1-1, et la page web devrait s’afficher correctement.
PS : supprime tous les anciens fichiers .htaccess que t’as pu créer dans /home/tony.