Comment activer la réécriture de mod pour Apache 2.2

J'ai une nouvelle installation D'Apache 2.2 sur ma machine Vista, Tout fonctionne bien, sauf mod rewrite.

j'ai décommenté

LoadModule rewrite_module modules/mod_rewrite.s

mais aucune de mes règles de réécriture ne fonctionne, même les règles simples comme

RewriteRule not_found %{DOCUMENT_ROOT}/index.php?page=404

toutes les règles que j'utilise fonctionnent sur mon hébergement, donc elles devraient être ok, donc ma question Est, y a-t-il quelque chose de caché dans la configuration d'apache, qui pourrait bloquer mod rewrite?

420
demandé sur Jakub Arnold 2009-05-15 18:37:40

16 réponses

pour utiliser mod_rewrite vous pouvez taper la commande suivante dans le terminal:

sudo a2enmod rewrite

redémarrer apache2 après

sudo /etc/init.d/apache2 restart

ou

sudo service apache2 restart

ou comme le prévoit le nouveau Système unifié de Contrôle de Façon

sudo systemctl restart apache2

ensuite, si vous le souhaitez, vous pouvez utiliser le fichier .htaccess suivant.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

ci-dessus .htaccess fichier (s'il est placé dans votre DocumentRoot ) redirigera tout le trafic vers un fichier index.php dans le fichier DocumentRoot à moins que le fichier n'existe.

alors, disons que vous avez la structure de répertoire suivante et que httpdocs est le DocumentRoot 1519170920"

httpdocs/
    .htaccess
    index.php
    images/
        hello.png
    js/
        jquery.js
    css/
        style.css
includes/
    app/
        app.php

tout fichier existant dans httpdocs sera signifié au demandeur en utilisant le .htaccess ci-dessus, cependant, tout le reste sera redirigé vers httpdocs/index.php . Vos fichiers de demande dans includes/app ne seront pas accessible.

886
répondu Jonathan Mayhak 2018-04-13 07:49:05

pour ma situation, j'avais

RewriteEngine On

dans mon .htaccess , avec le module chargé, et il ne fonctionnait pas.

la solution à mon problème était d'éditer mon entrée vhost à inlcude

AllowOverride all

dans la section <Directory> pour le site en question.

214
répondu Mike Wazowski 2017-12-19 09:55:05

j'ai écrit à ce sujet dans un article: http://www.jarrodoberto.com/articles/2011/11/enabling-mod-rewrite-on-ubuntu

Essayer de définir: AllowOverride All .


le deuxième problème le plus courant est que le mod rewrite n'est pas activé: a2enmod rewrite puis redémarre apache.

77
répondu Jarrod 2014-02-17 20:35:04

Si non des travaux ci-dessus essayez de modifier /etc/apache2/sites-enabled/000-default

presque au sommet, vous trouverez

<Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all
</Directory>

changer le AllowOverride None en AllowOverride All

cela a fonctionné pour moi

70
répondu Martin Sax 2016-09-13 16:32:45

Dans Ubuntu:

Run:

a2enmod rewrite

et ensuite:

service apache2 restart

mod_rewrite sera maintenant activé!

41
répondu nickleefly 2013-10-13 12:01:34

il y a plusieurs façons de résoudre ce problème, si vous connaissez la racine du problème.

Problème 1

tout d'abord, il peut y avoir un problème avec votre apache n'ayant pas le mod_rewrite.module C installé ou activé.

Pour cette raison, vous devez l'activer comme suit:

  1. Ouvrez votre console et tapez dedans, ceci:

    sudo a2enmod rewrite

  2. redémarrez votre serveur apache.

    service apache2 restart

problème 2

  1. vous pouvez également, en plus de ce qui précède, si cela ne fonctionne pas, changer la règle de surpassement du fichier de conf apache (soit apache2.conf, http.conf , ou 000-fichier par défaut).

  2. Localiser "le Répertoire /var/www/"

  3. remplacer le " Override None" par" Override All "

problème 3

si vous obtenez une erreur indiquant que le module de réécriture n'est pas trouvé, alors probablement votre module userdir n'est pas activé. Pour cette raison, vous devez l'activer.

  1. tapez ceci dans le console:

    sudo a2enmod userdir

  2. essayez d'activer le module de réécriture s'il n'est pas activé (comme mentionné ci-dessus).

pour en savoir plus, vous pouvez visiter ce site: http://seventhsoulmountain.blogspot.com/2014/02/wordpress-permalink-ubuntu-problem-solutions.html

27
répondu Kripa Jayakumar 2014-02-09 18:33:38

ouvrir le terminal et taper a2enmod rewrite , il activera votre module mod_rewrite pour Apache.

puis allez à /etc/apache2/sites-available et éditez le fichier par défaut. (Pour cela, vous devez avoir des permissions en écriture dans ce fichier et dans le dossier des sites disponibles.)

remplacer ci-dessous par les lignes 4 à 14 existantes."

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>

redémarrez maintenant votre apache par /etc/init.d/apache2 restart ou service apache2 restart

"151960920 Prendre" URL "propre" de nouveau le test et cette fois, il sera passé.

24
répondu Umesh Patil 2015-08-04 11:59:46

la nouvelle version d'apache a changé d'une manière ou d'une autre. Si votre version apache est 2.4, alors vous devez aller à /etc/apache2/ . Il y aura un fichier nommé apache2.conf . Vous devez éditer celui-ci (vous devriez avoir la permission de root). Changer le texte du répertoire comme ceci

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

redémarrez apache.

service apache2 reload

J'espère que ça va marcher.

16
répondu Ijas Ahamed N 2015-06-18 06:09:14

vous avez dit mod_rewrite.s au lieu de mod_rewrite.j'espère que c'est une faute de frappe dans votre question et pas dans le httpd.fichier conf! :)

< / edit>

Je suis plus habitué à utiliser Apache sous Linux, mais j'ai dû le faire l'autre jour.

tout d'abord, jetez un oeil dans votre répertoire D'installation Apache. (Je vais être en supposant que vous l'avez installé à "C:\Program les Fichiers" ici)

regardez dans le dossier: "C:\Program fichiers\Apache Software Foundation\Apache2.2 \ modules " et assurez-vous qu'il y a un fichier appelé mod_rewrite.alors là-dedans. (Il devrait l'être, il est fourni dans le cadre de l'installation par défaut.

suivant, ouvrez "C:\Program fichiers\Apache Software Foundation\Apache2.2 \ conf " et ouvrez httpd.conf. Assurez-vous que la ligne:

#LoadModule rewrite_module modules/mod_rewrite.so

est sans commentaire:

LoadModule rewrite_module modules/mod_rewrite.so

aussi, si vous voulez activer le RewriteEngine par défaut, vous pouvez ajouter quelque chose comme

<IfModule mod_rewrite>
    RewriteEngine On
</IfModule>

jusqu'à la fin de votre httpd.fichier conf.

si ce n'est pas le cas, veuillez préciser

RewriteEngine On

quelque part dans votre .fichier htaccess.

13
répondu gabehabe 2009-05-16 22:31:14

j'ai juste fait ce

sudo a2enmod rewrite

ensuite, vous devez redémarrer le service apache en suivant la commande

sudo service apache2 restart
4
répondu user3470929 2015-08-04 11:58:21

il y a évidemment plus d'une façon de le faire, mais je suggère d'utiliser la plus standard:

ErrorDocument 404 /index.php?page=404
3
répondu Michael Cramer 2009-05-15 15:52:58

la première fois que j'ai lutté avec les règles mod_rewrite ignorant mon trafic, j'ai appris (frustrant) que je les avais placés dans le mauvais <VirtualHost> , ce qui signifie que mon trafic ignorerait tous d'entre eux peu importe comment ils étaient bien écrits. Assurez-vous que cela ne vous arrive pas:

# Change the log location to suit your system. RewriteLog /var/log/apache-rw.log RewriteLogLevel 2

ces paramètres s'activeront si vous effectuez un redémarrage gracieux D'Apache, de sorte que vous pouvez les recycler dans et surveillez étroitement le comportement de mod_rewrite. Une fois votre problème résolu, retournez le niveau de réécriture et fêtez-le.

dans 100% de mon expérience, j'ai constaté que le RewriteLog m'a aidé à découvrir le problème avec mes règles de réécriture. Je ne peux pas le recommander assez. Bonne chance pour le dépannage!

aussi, CE Marque-page est votre meilleur ami: http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritelog

2
répondu Garrett Ellis 2015-04-29 09:29:27

je conseillerais fortement à tous ceux qui veulent activer les directives mod_rewrite .htacces utilise AllowOverride FileInfo au lieu de tout autoriser, comme le suggèrent toutes les réponses sur cette page. C'est triste de voir toutes ces réponses adopter l'approche "aussi longtemps que ça fonctionne" au lieu d'essayer de comprendre les conséquences de la "solution" proposée. Essayez de comprendre ce que vous faites sur votre serveur et comment limiter les privilèges que vous venez de donner suite avec AllowOverride All . RTFM! , c'est assez clair sur le sujet. Allez les gars, ce n'est pas de la science Rockets, c'est juste un serveur web!

2
répondu RemyNL 2016-12-19 14:10:23

vieux fil, juste pour mettre qui ne fixe pas AllowOverride à tous au lieu d'utiliser mod spécifique que vous voulez utiliser,

AllowOverride mod_rewrite mod_mime

et cette ligne doit être sans commentaire

LoadModule rewrite_module modules/mod_rewrite.so

Réfrences

2
répondu Abhishek Gurjar 2017-03-27 09:03:48

Ce qui a fonctionné pour moi (ubuntu):

sudo su
cd /etc/apache2/mods-enabled
ln ../mods-available/rewrite.load rewrite.load

aussi, comme déjà mentionné, assurez-vous que AllowOverride all est défini dans la section pertinente de /etc/apache2/sites-available/default

1
répondu Benubird 2014-02-07 10:00:50

utiliser sous la commande

sudo a2enmod rewrite

et le redémarrage d'apache par la commande

sudo service apache2 restart
0
répondu prasoon 2018-09-12 13:37:24