web-dev-qa-db-fra.com

htaccess fonctionne dans localhost mais ne fonctionne pas dans l'instance EC2

Mon fichier htaccess fonctionne sur localhost mais ne fonctionne pas lorsque je le déploie sur l'instance EC2.

J'utilise Macbook et dans le Finder, je ne vois pas le fichier htaccess, je pensais qu'il n'avait peut-être pas été copié dans l'instance EC2 mais je ne pense pas que ce soit le problème parce que lorsque je copie le projet, je peux voir le fichier htaccess dans mon éditeur.

Y a-t-il quelque chose qui active la réécriture de mod dans l'instance linux EC2? Si c'est le cas, je ne l'ai pas fait ou cela permet la réécriture du mod par défaut?

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
14
Yusuf Can Gürkan

J'ai rassemblé des informations provenant de divers postes, alors j'ai pensé mettre en place une réponse.

  1. Comme l'a commenté Paul, si vous utilisez Amazon EC2 Linux, vous exécutez probablement httpd au lieu d'Apache. Le fichier est donc dans /etc/httpd/conf/httpd.conf
  2. Vous devez modifier le fichier en tant qu'utilisateur root. (depuis l'accès ssh) Procédez comme suit: Sudo vim /etc/httpd/conf/httpd.conf ( Comment modifier le fichier httpd.conf dans Amazon EC2 )
  3. DocumentRoot "/var/www/html" a été répertorié à deux endroits pour moi. J'ai dû changer le AllowOverride None à AllowOverride All à ces deux endroits.
  4. Redémarrez Apache. J'ai redémarré toute mon instance ec2 (j'ai Apache configuré pour démarrer automatiquement) bien que le redémarrage d'Apache devrait fonctionner. Mais je vois que le changement fonctionne.

J'essayais d'apporter les mêmes modifications dans un fichier .htaccess (en supprimant l'index.php des URL dans une application d'allumeur de code). J'espère que ça aide!

56
user1521567

Par défaut, EC2 n'a pas .htaccess activé, vous devez modifier votre httpd.config pour le permettre.

Dans/etc/Apache/sites-available/default, changez AllowOverRide = None en AllowOverRide = All.

8
user2864228

Lorsque vous utilisez le serveur Apache2

Accédez au répertoire suivant.

cd/etc/Apache2/sites-available

Si vous utilisez la commande LS ici, vous verrez le fichier suivant.

0-default.conf

C'est le fichier avec la configuration Apache par défaut qui est appliqué à vos sites dans le dossier/var/www/html.

Ouvrez ce fichier pour le modifier.

Sudo nano 000-default.conf

Ajoutez les lignes suivantes après la ligne DocumentRoot/var/www/html.

Options FollowSymLinks AllowOverride All Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

Enregistrez le fichier et redémarrez Apache.

redémarrage du service Sudo Apache2

c'est tout et maintenant votre fichier .htaccess fonctionnera

2
Raghul

C'est un processus en trois étapes

  1. Configurez Apache mod_rewrite, exécutez dans le terminal. Réécriture sudo a2enmod

  2. ajoutez le code suivant à/etc/Apache2/sites-available/default

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>

3.Redémarrez Apache

/etc/init.d/Apache2 restart
2
Abhishek Gupta

Il y a trois étapes

  1. Configurez Apache mod_rewrite, exécutez dans le terminal. Réécriture sudo a2enmod

  2. Ajoutez ce code dans ce fichier après avoir fermé la balise VirtualHost /etc/Apache2/sites-available/000-default.conf

    DocumentRoot/var/www
    Options FollowSymLinks
    AllowOverride All
    Options Index FollowSymLinks MultiViews
    AllowOverride All
    Ordonnance autoriser, refuser
    permettre à tous

  3. Redémarrez le serveur Apache par commande

    Sudo service Apache2 restart

0
Raman Singh

Sur l'environnement Linux 1 - cd/etc/Apache2/sites-available

2 - Sudo nano 000-default.conf

et collez ce code:

<Directory "/var/www/html">
    Order allow,deny
    Allow from all
    Options None
    AllowOverride All
</Directory>

Cela a fonctionné sur l'instance AWS.

0
lucasvm1980