Comment définir AllowOverride all


161

Je veux régler le AllowOverride allmais je ne sais pas comment le faire. J'ai trouvé le code suivant en recherchant sur Google et en le collant dans .htaccess:

<Directory>
        AllowOverride All
</Directory>

Mais après l'avoir collé, j'ai commencé à recevoir "Internal Server Error"

Quelqu'un peut-il me guider où mettre ce code ou comment le faire?


3
La <Directory>directive requiert un argument de chemin.
FKEinternet

Réponses:


317

Si vous êtes sur Ubuntu, éditez le fichier /etc/apache2/apache2.conf(nous avons ici un exemple de /var/www):

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

et changez-le en;

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

puis,

sudo service apache2 restart

Vous devrez peut-être également le faire sudo a2enmod rewritepour activer la réécriture du module.


55
J'avais également besoin d'utiliser sudo a2enmod rewrite, puis cela a fonctionné. Sur Ubuntu 14.04 LTS. J'espère que cela sera utile à quelqu'un.
Jonauz

2
Étrange ... quand je fais cela, j'obtiens l'erreur de serveur interne. Cela indique-t-il une erreur dans le fichier .htaccess situé dans /var/www/.htaccess? Le fait de remettre apache2, conf sur AllowOverride None corrige l'erreur mais n'autorise pas les réécritures d'URL.
o_O

Dans Ubuntu 12.04. J'ai trouvé ce fichier dans / etc / apache2 / sites-available / default path
عثمان غني

Comment puis-je remplacer cela à partir d'un fichier séparé? Je peux voir qu'il y a une IncludeOptional conf-enabled/*.confà la dernière ligne de mon apache2.conffichier. Mais il semble que ce apache2.confsoit une priorité.
JohnnyQ

Cela fait la magie pour moi. Après avoir mis à jour le serveur Debian de mon entreprise de Wheezy à Jessie, tout dans Apache a cessé de fonctionner et après avoir ajouté cela, tout a recommencé à fonctionner.
periket2000

51

L'objectif principal de AllowOverrideest que le gestionnaire des principaux fichiers de configuration d'apache (celui qui se trouve dans / etc / apache2 / principalement) décide quelle partie de la configuration peut être modifiée dynamiquement par les applications.

Si vous n'êtes pas l'administrateur du serveur, vous dépendez du niveau AllowOverride que ces administrateurs vous permettent. Afin qu'ils puissent vous empêcher de modifier certains paramètres de sécurité importants;

Si vous êtes le maître gestionnaire de configuration Apache, vous devez toujours utiliser AllowOverride Noneet transférer tous les exemples basés sur google que vous trouvez, basés sur les fichiers .htaccess, dans les Directorysections des fichiers de configuration principaux. En tant que contenu .htaccess pour un .htaccessfichier dans /my/path/to/a/directoryest identique à une <Directory /my/path/to/a/directory>instruction, sauf que la .htaccessmodification de la configuration dynamique par requête HTTP ralentit votre serveur Web. Préférez toujours une configuration statique sans .htaccesscontrôles (et vous éviterez également les attaques de sécurité par .htaccessaltérations).

Au fait, dans votre exemple, vous utilisez <Directory>et ce sera toujours faux, les instructions de répertoire contiennent toujours un chemin, comme <Directory />ou <Directory C:>ou <Directory /my/path/to/a/directory>. Et bien sûr, cela ne peut pas être mis dans un .htaccesscomme une .htaccessinstruction de répertoire mais dans un fichier présent dans ce répertoire. Bien sûr, vous ne pouvez pas modifier AllowOverrideun .htaccesscar cette instruction gère le niveau de sécurité des .htaccessfichiers.


17

Aller your_severpath/apache_ver/conf/ Ouvrez le fichier httpd.confdans le Bloc-notes.

Trouvez cette ligne:

#LoadModule modules vhost_alias_module / mod_vhost_alias.so

Supprimez le symbole de hachage:

LoadModule vhost_alias_module modules / mod_vhost_alias.so

Ensuite aller à <Directory />

et changer pour:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Redémarrez ensuite votre serveur local.


Travail accompli! Ty Sir!
James Walker

6
NB Order allow,denyet Allow from allsont pour Apache 2.2 et versions antérieures. Avec Apache 2.4, ces deux lignes sont remplacées par Require all grantedcomme indiqué dans d'autres réponses.
FKEinternet

13

Sous Linux, afin de relâcher l'accès à la racine du document, vous devez éditer le fichier suivant:

/etc/httpd/conf/httpd.conf

Et selon le niveau de répertoire auquel vous souhaitez assouplir l'accès, vous devez modifier la directive

AllowOverride None

à

AllowOverride All

Donc, en supposant que vous souhaitiez autoriser l'accès aux fichiers du répertoire / var / www / html, vous devez modifier les lignes suivantes à partir de:

<Directory "/var/www/html">
 AllowOverride None
</Directory>

à

<Directory "/var/www/html">
 AllowOverride All
</Directory>

8
et redémarrez le serveur après
Daniel

Après cent fois de vérifier mes .htacces - c'était la solution! Merci beaucoup. J'ai pensé que "tout" était la valeur par défaut de la configuration apache.
Matthias Kleine

De plus, mentionner Linux dans votre réponse n'est pas bon. Même si c'est vieux, je veux juste préciser que ce que vous dites est pour les distributions basées sur Redhat
Chi.CJRajeeva Lochana

11

Si vous utilisez Linux, vous pouvez modifier le code dans le répertoire de

/etc/httpd/conf/httpd.conf

maintenant, trouvez ici la ligne de code un peu comme

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
#   Options FileInfo AuthConfig Limit
#
    AllowOverride None
#
# Controls who can get stuff from this server.
#
    Order allow,deny
    Allow from all

</Directory>

Remplacez AllowOveride None par AllowOveride All

Maintenant, vous pouvez définir n'importe quel type de règle dans votre fichier .httacess à l'intérieur de vos répertoires si un autre système d'exploitation essaie simplement de trouver le fichier httpd.conf et de le modifier.


À partir de 2015Nov18 1539 PST, lorsque je recherche Google pour 'allowoverride', je vois une boîte au-dessus des résultats de la recherche qui montre ceci:now here fine the code line kinda like # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride None # # Controls who can get stuff from this server. #Sep 11, 2013 apache - How to Set AllowOverride all - Stack Overflow stackoverflow.com/questions/18740419/how-to-set-allowoverride-all
boot13


5

Comme d'autres utilisateurs l'ont expliqué ici à propos de l'utilisation de la directive allowoveride, qui est utilisée pour donner l'autorisation d'utiliser .htaccess. une chose que je tiens à souligner que n'utilisez jamais allowoverride all si d'autres utilisateurs ont accès à l'écriture .htaccess au lieu d'utiliser allowoveride pour autoriser certains modules.

Comme au AllowOverride AuthConfig mod_rewritelieu de

AllowOverride All

Parce qu'un module comme mod_mime peut rendre vos fichiers côté serveur sous forme de texte brut.


1
MERCI!! C'est exactement ce que je cherchais. Je veux rediriger windwalker.com.au vers windwanderer.com.au et j'avais donc besoin d'autoriser cette directive dans un fichier .htaccess et RIEN DE PLUS. Toujours mettre AllowOverride ALL de manière significative réduit la sécurité de mes serveurs.
Jesse the Wind Wanderer

1

Je rencontre également ce problème et j'ai trouvé la solution en 2 étapes ci-dessous: 1. Dans le dossier apache2, vous modifiez dans l'élément Directory en définissant "AllowOverride all" (devrait être "all" et non "none") 2. Dans le projet kohana dans le dossier www, renommez "example.htaccess" en ".htaccess"

Je l'ai fait sur Ubuntu. J'espère que cela vous aidera.


0

Serveur d'entreprise Linux SuSE

Assurez-vous que vous modifiez le bon fichier https://www.suse.com/documentation/sles11/book_sle_admin/data/sec_apache2_configuration.html

httpd.conf

Le fichier de configuration principal du serveur Apache. Évitez de modifier ce fichier. Il contient principalement des instructions d'inclusion et des paramètres globaux. Remplacez les paramètres globaux dans les fichiers de configuration pertinents répertoriés ici. Modifiez les paramètres spécifiques à l'hôte (tels que la racine du document) dans votre configuration d'hôte virtuel .

Dans ce cas vhosts.d/*.confdoit être édité


0

De plus, ces réponses correctes votées à la hausse peuvent parfois voir la même erreur en raison de paramètres incompatibles et différents sur une SSLpartie des configurations de serveur Web . (Évidemment, lorsque vous n'utilisez pas de .htaccessfichier).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.