138 votes

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

Actuellement, j'utilise l'hébergement avec vitesse lumière serveur. L'hébergement dit mod_rewrite est activé, mais je n'arrive pas à faire fonctionner mon script. Chaque fois que j'essaie d'accéder à l'URL, il retourne 404 - non trouvé page.

J'ai mis les mêmes codes sur un autre serveur qui fonctionne avec Apache. Cela fonctionne là-bas. Je suppose donc que c'est le .htaccess y mod_rewrite question.

Mais le support d'Hosting insiste toujours sur le fait que leur mod_rewrite est activé, alors j'aimerais savoir comment je peux vérifier s'il est effectivement activé ou non.

J'ai essayé de vérifier auprès de phpinfo() mais pas de chance, je n'arrive pas à trouver mod_rewrite est-ce parce qu'ils utilisent des lightspeed ?

Existe-t-il un moyen de vérifier ? Veuillez m'aider. Je vous remercie.

POUR INFORMATION : mon .htaccess Le 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 également essayé comme ceci

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 le résultat est le même.

18voto

EnchanterIO Points 2135

Console :

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

sudo a2enmod rewrite
sudo service apache2 restart

16voto

Si

in_array('mod_rewrite', apache_get_modules())

retours true alors le mod-rewrite est activé.

16voto

starkeen Points 29161

La fonction perdefined de PHP apache_get_modules() renvoie 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 le mod-rewrite à l'aide de votre fichier .htaccess fichier.

Créer un htaccess dans le document Root et ajoutez la rewriteRule suivante :

RewriteEngine on

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

Visitez maintenant http://example.com/HelloWorld Vous serez transmis en interne à /index.php de votre site. Dans le cas contraire, si le mod-rewrite est désactivé, vous obtiendrez une erreur de serveur 500 Internel.

J'espère que cela vous aidera.

15voto

Adi Prasetyo Points 548

Vous pouvez également le faire sur le terminal :

apachectl -M
apache2ctl -M

extrait de 2daygeek

10voto

Clive Points 28701

Si ce code se trouve 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 que vous pouvez visiter n'importe quelle page de votre site sans obtenir une erreur de serveur 500, je pense que l'on peut dire que le module de réécriture est activé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X