web-dev-qa-db-fra.com

Pourquoi "Paramètres-> Permaliens" crée un fichier .htaccess sur le serveur nginx?

J'ai créé un site wordpress et hébergé sur le serveur nginx, et settings-> Permalinks et cliqué sur save changes. Cela crée un fichier .htaccess à la racine du site.

Sur un serveur Apache, c'est logique et cela vaut la peine de créer un fichier .htaccess, mais qu'est-ce que cela a à voir avec nginx server? Est-il prudent de supprimer le fichier .htaccess de la racine de mon site Web?

3

WordPress essaie de détecter le type du serveur Web en se jetant dans la variable globale $_SERVER['SERVER_SOFTWARE'].

La vérification Apache est la suivante:

$is_Apache = (strpos($_SERVER['SERVER_SOFTWARE'], 'Apache') !== false 
    || strpos($_SERVER['SERVER_SOFTWARE'], 'LiteSpeed') !== false);

et le contrôle Nginx est:

$is_nginx = (strpos($_SERVER['SERVER_SOFTWARE'], 'nginx') !== false);

Vous devriez donc d'abord vérifier:

var_dump( $_SERVER['SERVER_SOFTWARE'] );

pour voir si c'est correct.

Voici quelques solutions de rechange:

Il est également possible d'éviter que le fichier .htaccess ne soit créé avec:

add_filter( 'flush_rewrite_rules_hard', '__return_false' );

pour éviter la save_mod_rewrite_rules() à exécuter.

Dans la fonction save_mod_rewrite_rules(), il y a une vérification got_mod_rewrite() avant la mise à jour du .htaccess. Il est également possible d'utiliser:

add_filter( 'got_rewrite', '__return_false' );

pour éviter que insert_with_markers() ne soit exécuté, le fichier .htaccess est écrit.

3
birgire