web-dev-qa-db-fra.com

Avoir UserDir activé mais aussi vouloir réécrire l'URL si appelé différemment

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.

3
Spartan-196

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])
1
Spartan-196

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]
1
Stephen Ostermiller