J'ai une situation où j'essaie d'utiliser la directive RedirectMatch d'Apache pour rediriger tous les utilisateurs vers une URL HTTPS à l'exception de un seul utilisateur (Linux) accédant à son propre espace web. J'ai trouvé un morceau de code d'expression régulière qui nie le nom d'utilisateur:URL de l'espace utilisateur Negate dans Apache
^((?!andy).)*$
mais lorsque je tente de l'utiliser dans la directive:
RedirectMatch ^((?!andy).)*$ https://www.example.com/
l'URL:
http://www.example.com/~andy/
obtient encore redirigé vers l'URL HTTPS:
https://www.example.com/
Lorsque je veux ignorer la redirection. Je ne suis pas un expert en expressions régulières (ou Apache), donc toute aide pour obtenir ce travail serait grandement appréciée.
Merci, Stephen
Edit: OK, l'intrigue s'épaissit ... si je commente la ligne:
# RedirectMatch ^((?!andy).)*$ https://www.example.com/
et redémarrez Apache, puis essayez l'URL:
http://www.example.com/andy
Je reçois une réponse 404, ce qui est attendu. Mais, si je tente l'URL:
http://www.example.com/~andy
La redirection est déclenchée et je suis redirigé vers:
https://www.example.com/
et comme je le disais, la redirection est commenté et j'ai redémarré le serveur. Comment cela peut-il arriver? Donc, ce n'est pas juste une chose regex, il semble qu'Apache redirige sans instruction!
Attention: '^ (. (?! andy)) * $' correspond à toute chaîne qui n'a pas * * 'andy' contiennent partout, il sera également déclencher sur' randy' etc. Je ne peux pas expliquer le comportement que vous voyez, cependant. –