web-dev-qa-db-fra.com

Comment utiliser le fichier .htaccess dans nginx

Je suis en train de migrer mon site Web d'Apache vers nginx, mais mon fichier .htaccess ne fonctionne pas. Mon site Web se trouve dans le dossier /usr/share/nginx/html/mywebsite. Comment utiliser .htaccess sur mon serveur nginx?

Ceci est mon fichier .htaccess:

RewriteEngine on
RewriteRule video/watch/([a-zA-Z0-9_@$*-]+)/?$ "videos-single.php?id=$1" [NC]
7

Nginx ne supporte pas .htaccess (voir ici : "Vous ne pouvez pas faire cela. Vous ne devriez pas. Si vous avez besoin de .htaccess, vous le faites probablement mal.").

Vous avez deux choix (à ma connaissance):

10
uzsolt

Ce n'est pas supporté officiellement dans nginx. Si vous avez besoin de ce type de fonctionnalité, vous devrez utiliser Apache ou un autre serveur http qui le supporte.

Cela dit, le le raisonnement officiel de nginx est erroné car il confond ce que les utilisateurs veulent faire avec la façon dont il est fait. Par exemple, nginx pourrait facilement vérifier les répertoires uniquement toutes les 10 secondes/minute environ, ou utiliser des mécanismes inotify et similaires. Cela éviterait d'avoir à vérifier chaque demande ... Mais savoir que cela ne vous aide pas. :)

Vous pouvez contourner cette limitation en écrivant un script qui attendrait que les fichiers de configuration nginx apparaissent, puis en les copiant dans /etc/nginx/conf.d/. Toutefois, certaines implications en termes de sécurité peuvent exister: étant donné qu'il n'existe pas de support natif pour .htaccess dans nginx, il n'y a pas non plus de support pour limiter les directives de configuration autorisées dans les fichiers de configuration. YMMV.

0
johndodo