web-dev-qa-db-fra.com

Comment vérifier si mod_rewrite est activé sur le serveur?

Actuellement, j'utilise l'hébergement avec lightspeed server. L'hébergement indique que mod_rewrite est activé mais je ne parviens pas à faire fonctionner mon script là-bas. Chaque fois que j'essaie d'accéder à l'URL, il retourne 404 - non trouvé page.

Je mets les mêmes codes sur un autre serveur qui fonctionne avec Apache. Cela fonctionne là-bas. Donc, je suppose que c'est le problème .htaccess et mod_rewrite.

Mais le support d'hébergement insiste toujours sur le fait que leur mod_rewrite est activé. J'aimerais donc savoir comment puis-je vérifier s'il est activé ou non.

J'ai essayé de vérifier avec phpinfo(), mais pas de chance, je ne trouve pas mod_rewrite, est-ce parce qu'ils utilisent lightspeed?

Y a-t-il un moyen de vérifier? Sil te plait aide moi. Je vous remercie.

FYI: mon .htaccess code est

Options -Indexes

<IfModule mod_rewrite.c>
DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]
</IfModule>

J'ai essayé comme ça aussi

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

Mais même résultat.

84
knightrider
  1. Pour vérifier si le module mod_rewrite est activé, créez un nouveau fichier php dans votre dossier racine de votre serveur WAMP. Entrez ce qui suit

    phpinfo();

  2. Accédez à votre fichier créé à partir de votre navigateur.

  3. CtrlF ouvrir une recherche. Recherchez 'mod_rewrite'. S'il est activé, vous le voyez en tant que "modules chargés"

  4. Sinon, ouvrez httpd.conf (fichier de configuration Apache) et recherchez la ligne suivante.

    #LoadModule rewrite_module modules/mod_rewrite.so

  5. Supprimez le signe dièse ('#') au début et enregistrez le fichier this.

  6. Redémarrez votre serveur Apache.

  7. Accédez au même fichier php dans votre navigateur.

  8. Recherchez à nouveau 'mod_rewrite'. Vous devriez pouvoir le trouver maintenant.

85
Fadzly Othman

à partir de la ligne de commande, tapez 

Sudo a2enmod réécrire

si le mode de réécriture est déjà activé, il vous le dira!

57
KawaiKx

Si vous utilisez un fichier de configuration d'hôtes virtuels, assurez-vous que l'hôte virtuel en question possède la directive AllowOverride All quelque part comme ceci:

<VirtualHost *:80>
        ...
    <Directory "directory/of/your/.htaccess">
        AllowOverride All
    </Directory>
</VirtualHost>
50
Jahmic

Si Apache_get_modules () n'est pas reconnu ou aucune information sur ce module dans phpinfo (); essayez de tester le mod rewrite en ajoutant ces lignes dans votre fichier .htaccess:

RewriteEngine On
RewriteRule ^.*$ mod_rewrite.php

Et mod_rewrite.php:

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

console: 

<VirtualHost *:80>
        ...
    <Directory ...>
        AllowOverride All
    </Directory>
</VirtualHost>

Sudo a2enmod rewrite
Sudo service Apache2 restart
12
BlocksByLukas

Si 

in_array('mod_rewrite', Apache_get_modules())

renvoie true puis mod-rewrite est activé.

11
Shivanshu

Si ce code est dans votre fichier .htaccess (sans la vérification de mod_rewrite.c)

DirectoryIndex index.php
RewriteEngine on

RewriteCond $1 !^(index\.php|assets|robots\.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php/$1 [L,QSA]

et vous pouvez visiter n’importe quelle page de votre site avec l’obtention d’une erreur de serveur 500. Je pense qu’il est prudent de dire que le mod rewrite est activé.

8
Clive

vous pouvez le faire sur le terminal, soit:

apachectl -M
Apache2ctl -M

pris de 2daygeek

8
Adi Prasetyo

La fonction perdefined Apache_get_modules() de PHP retourne une liste des modules activés. Pour vérifier si mod_rewrite est activé, vous pouvez exécuter le script suivant sur votre serveur:

<?php
print_r(Apache_get_modules());
?>

Si l'exemple ci-dessus échoue, vous pouvez vérifier mod-rewrite à l'aide de votre fichier .htaccess

Créez un fichier htaccess dans la racine du document et ajoutez la rewriteRule suivante:

RewriteEngine on

RewriteRule ^helloWorld/?$ /index.php [NC,L]

Maintenant, visitez http://example.com/HelloWorld , vous serez redirigé en interne vers la page /index.php de votre site. Sinon, si mod-rewrite est désactivé, vous obtiendrez une erreur de 500 Internel server. 

J'espère que cela t'aides. 

7
starkeen

Cela fonctionne sur CentOS:

$ Sudo httpd -M |grep rewrite_module

Doit sortir rewrite_module (shared)

5
radtek

Si vous êtes dans le système Linux, vous pouvez vérifier tous les modules d'activation pour Apache2 (dans mon cas) dans le dossier suivant:/etc/Apache2/mods-available

cd /etc/Apache2/mods-available

taper: ll -a
si vous voulez vérifier les modules disponibles pour php (dans ce cas, php 7) folder /etc/php/7.0/mods-available

cd /etc/php/7.0/mods-available

taper: ll -a

4
3p3ch3

Vous pouvez utiliser la fonction php 

      Apache_get_modules

et vérifiez mod_rewrite

<pre>
<?php
print_r(Apache_get_modules());
?>
</pre>

http://in2.php.net/Apache_get_modules

4
Miqdad Ali

faites juste une nouvelle page et ajoutez ce code

 <?php
 if(!function_exists('Apache_get_modules') ){ phpinfo(); exit; }
 $res = 'Module Unavailable';
 if(in_array('mod_rewrite',Apache_get_modules())) 
 $res = 'Module Available';
?>
<html>
<head>
<title>A mod_rewrite availability check !</title></head>
<body>
<p><?php echo Apache_get_version(),"</p><p>mod_rewrite $res"; ?></p>
</body>
</html>

et exécutez cette page puis trouvez-vous capable de savoir que le module est disponible ou non, sinon vous pouvez demander à votre hébergement ou si vous souhaitez l'activer sur une machine locale, puis consultez ce tutoriel youtube étape par étape pour activer le module de réécriture dans wamp Apache https://youtu.be/xIspOX9FuVU?t=1m43s Icône du serveur Wamp -> Apache -> Apache Modules et cochez l'option de réécriture du module 

3
Hassan Saeed

Je sais que cette question est ancienne, mais si vous pouvez modifier votre fichier de configuration Apache en AllowOverride All à partir de AllowOverride None

<Directory "${SRVROOT}/htdocs">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.Apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
1
Excellent Lawrence

Il vous suffit de vérifier si le fichier est là, en tapant

cat /etc/Apache2/mods-available/rewrite.load

La ligne de résultat ne peut pas être commentée à partir de #

J'avais le problème exact, je l'ai résolu en cliquant sur la structure personnalisée, puis en ajoutant /index.php/%postname%/ et cela fonctionne

J'espère que cela évite à quelqu'un le stress que j'ai vécu de trouver ce qui n'allait pas.

0
Kyle S

Ce code a fonctionné pour moi:

if (strpos(Shell_exec('/usr/local/Apache/bin/apachectl -l'), 'mod_rewrite') !== false) echo "mod_rewrite enabled";
else echo "mod_rewrite disabled";
0
Keinan Goichman