Je suis en train de configurer un nouveau serveur pour que nos utilisateurs puissent utiliser un espace Web personnel. J'ai dans mon httpd.conf d'Apache les directives pour UserDir comme suit
UserDir disabled root
UserDir public_html
Cela a permis aux requêtes http://myserver/~user/
de fonctionner, mais je souhaite également le configurer pour que les pages soient accessibles via http://myserver/users/username
.
Comment cela peut-il être fait? J'avais pensé à la règle mod_rewrite mais je n'ai pas réussi jusqu'à présent.
EDIT: Essentiellement, je cherche à prendre les demandes http://myserver/users/username
et à les pointer ou à les réécrire en http://myserver/~user/
. que cela change dans la barre d'adresse est sans importance pour le moment.
J'ai consulté des collègues plus âgés et nous avons constaté que la règle que je cherchais était la suivante:
RewriteRule ^/users/(.*)$ /~\$1 [R]
Si j'utilisais la correspondance Alias
, il me faudrait:
AliasMatch (^[A-Za-z0-9])
Voici quelqu'un qui a réussi à utiliser les règles de réécriture pour supprimer complètement le tilde:
http://www.bit-integrity.com/2011/08/getting-rid-of-tilde.html
J'ai modifié ce qu'ils ont fait pour mettre le répertoire "utilisateurs" dans.
RewriteEngine On
#RewriteLog logs/rewrite.log # Uncomment for rewrite logging
#RewriteLogLevel 3 # uncomment for verbose logging
RewriteCond %{REQUEST_URI} ^/users/([^/]+)
RewriteCond /home/%1 -d
RewriteRule ^/([^/]+)(.*) /home/$1/public_html/$2
Voici un fil sur WebmasterWorld.com où quelqu'un voulait rediriger la version avec le tilde: http://www.webmasterworld.com/Apache/4362132.htm
Si vous voulez rediriger la version de tilde vers une autre direction, vous devez utiliser quelque chose comme ceci. Ces règles de réécriture sont destinées à chaque utilisateur .htaccess
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /~mysite
RewriteRule (.*) http://example.com/$1 [R=301,L]
RewriteCond %{HTTP_Host} !^(example\.com)?$
RewriteRule (.*) http://example.com/$1 [R=301,L]