Comment tester si mod_rewrite est activé?

17

Je mets en place un environnement pour wordpress sur apache2, sur une nouvelle installation d'ubuntu 12.04.

Afin de faire fonctionner les URL conviviales, j'essaie de configurer mod_rewrite. J'ai suivi quelques instructions que j'ai trouvées sur le net et utilisé a2enmod.

Maintenant. après avoir redémarré apache, je voudrais vérifier si le module est réellement chargé.

La commande que j'ai trouvée pour obtenir une liste des modules chargés est la suivante:

apache2 -t -D DUMP_MODULES

Cependant, cela renvoie une erreur:

apache2: mauvais nom d'utilisateur $ {APACHE_RUN_USER}

Alors, comment puis-je réellement répertorier tous les modules chargés, ou sinon vérifier si mod_rewrite a été activé?

user124130
la source

Réponses:

18

KM01 signifiait apachectlmais cela ne vous donnera pas ce dont vous avez besoin. Cela contrôlera le démarrage / l'arrêt / le redémarrage du serveur, ainsi que la fourniture de certaines informations d'état. L'option de fichier php fonctionne, mais nécessite un travail supplémentaire de votre part. Au lieu de cela, essayez d' exécuter php à partir de la ligne de commande: $ php -i. Cela génère ce qui phpinfo()sort, uniquement sur la ligne de commande.

Vous pouvez obtenir une liste des modules compilés en exécutant $ apache2 -l, mais cela n'aide pas à afficher les modules chargés dynamiquement à l'aide des directives LoadModule (ou autres).

Vous pouvez voir quels modules sont chargés dynamiquement en regardant les entrées dans /etc/apache2/mods-enabled/. Certains ont un fichier conf supplémentaire dans le même répertoire pour la configuration. Ces modules ne sont PAS chargés deux fois. Vous pouvez voir une liste des modules disponibles à charger dynamiquement en regardant /etc/apache2/mods-available/. Vous pouvez les activer sur la ligne de commande avec $ a2enmod <module_name>. Vous pouvez les décharger avec $ a2dismod <module_name>.

Lorsque vous avez terminé d'activer / désactiver, vous devez redémarrer apache avec $ service apache2 restartou $ apachectl graceful. Vous aurez besoin des privilèges root (sudo) pour faire la plupart, sinon la totalité, de ce travail.

Chris Smola
la source
4

1) Tapez <?php phpinfo(); ?>un fichier php et enregistrez-le et exécutez ce fichier sur le serveur.

2) Et maintenant, vous pouvez la liste des informations, il suffit de rechercher le mot "mod_rewrite" dans le menu de recherche du navigateur

3) S'il se trouve dans la section «Modules chargés», ce module est déjà chargé comme vous le voyez dans l'image ci-dessous, sinon vous devez passer à l'étape suivante pour activer le module mod_rewrite.

source: http://roshanbh.com.np/2008/04/check-enable-mod_rewrite-apache.html

Richard
la source
4

Au lieu d'utiliser la apache2commande, avez-vous la apachectlcommande? Il doit être au même endroit que apache2. Ou vous pouvez exécuter la commande avec des privilèges élevés en utilisantsudo apache2 -t -D DUMP_MODULES

KM.
la source
2

Tout comme @Richard l'a expliqué, mais ce que vous devez réellement faire pour y parvenir est d'avoir un fichier avec le contenu suivant:

<?php
    phpinfo();
?>

Cela affiche diverses informations sur votre configuration apache / php. D'autres trucs utiles que vous y trouverez seraient si imagick est installé ou non. Tous les modules apache chargés sont également présents.

Borislav Sabev
la source
2

Les informations PHP ne vous montreront pas toujours si elles sont activées ou non. Pardon!

Cependant, cette page sur débordement de la pile ne se vous l' avez fait dans la bonne direction.

Alternativement, voici quelques php pour les énumérer tous:

<?php foreach( apache_get_modules() as $module ) echo "$module<br />";  ?>
monsieur
la source
2
Vous avez raison, la solution phpinfo (ou via l'extension apache) ne fonctionne que si PHP est compilé / utilisé comme module Apache. Pas dans * CGI, FPM, etc. En outre, mod_rewrite pourrait être chargé (LoadModule) mais la réécriture pourrait être refusée, selon AllowOverride et / ou Options.
juillet
2

Créez simplement un mod_rewrite.phpfichier dans votre répertoire racine et placez-y le code ci-dessous:

<?php 
echo
"Mod_rewrite is activated!"
; ?>

Renommez maintenant votre ancien .htaccessfichier

Créez simplement un nouveau fichier .htaccess et placez le code ci-dessous.

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Maintenant, appuyez sur Enregistrer.

Ensuite, visitez votre site, vous recevrez un message.

Awais
la source
2

Sur centos 6.5+ sur le type de terminal

httpd -M | grep 'rewrite'

Si dans la réponse, vous pouvez voir rewrite_module (shared) cela signifie qu'il est installé. Vous pouvez supprimer grep 'rewrite' et obtenir la liste de tous les modules pour votre installation Apache.

Nicolas Guérinet
la source
0

Sur le type suse en tant que root dans le terminal httpd2 -M, cela donne une liste des modules chargés. httpd2 -lne donne que les modules compilés. Cela fonctionne pour apache 2.4

Richard
la source