J'ai un noyau Ubuntu 14.04. J'installais mon application Laravel sur ce serveur. Après l'installation, j'ai essayé de définir le répertoire racine sur public.
Sudo nano /etc/Apache2/sites-available/000-default.conf
Je n'ai que ces options dans le fichier
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port t$
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual Host. For the default virtual Host (this file) this
# value is not decisive as it is used as a last resort Host regardless.
# However, you must set it for any further virtual Host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public/
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual Host. For example the
# following line enables the CGI configuration for this Host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
# vim: syntax=Apache ts=4 sw=4 sts=4 sr noet
J'ai changé la racine du document en
DocumentRoot /var/www/html/public/
Maintenant, lorsque j'ai essayé d'accéder à mon application Laravel, via 123.xxx.xxx.xxx/
, la page d'accueil s'affiche et fonctionne correctement. Il obtient aussi toutes les variables GET. Exemple: 123.xxx.xxx.xxx?type=wefwef
Mais quand je vais sur d'autres liens tels que 123.xxx.xxx.xxx/login
, cela me donne une erreur
Not Found
The requested URL /login/ was not found on this server.
Apache/2.4.7 (Ubuntu) Server at 104.236.234.85 Port 80
J'ai le routes.php fonctionne bien sur localhost. Mais pas sur ce serveur. Aidez-moi, s'il vous plaît.
On dirait que vous devez activer .htaccess
en l'ajoutant à votre vhost:
<Directory /var/www/html/public/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Si cela ne fonctionne pas, assurez-vous que mod_rewrite est activé.
N'oubliez pas de redémarrer Apache après avoir apporté les modifications! (service Apache2 restart
)
J'ai résolu en procédant comme suit: Vérifiez s'il existe un module appelé rewrite.load dans votre Apache à l'adresse:
cd /etc/Apache2/mods-enabled/
S'il n'existe pas, exécutez l'extrait suivant:
Sudo a2enmod rewrite
Sinon, modifiez le fichier de configuration Apache pour consolider l'utilisation de "l'URL conviviale".
Sudo nano /etc/Apache2/Apache2.conf
Recherchez le code suivant dans l'éditeur:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Changer en:
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Après cela, redémarrez le serveur Apache via:
Sudo /etc/init.d/Apache2 restart
Commencez par activer a2enmod rewrite
next, redémarrez Apache.
/etc/init.d/Apache2 restart
Sinon, vous pouvez remplacer tout le contenu de votre fichier .htaccess
Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Voir la documentation ici. https://laravel.com/docs/5.8/installation#web-server-configuration
En plus de toutes les réponses si vous rencontrez toujours une variante du problème, modifiez le fichier .env
et définissez APP_URL
sur votre nom de domaine, comme suit:
APP_URL=similar_to_my_avatar_link
Dans le fichier httpd.conf, vous devez supprimer #
#LoadModule rewrite_module modules/mod_rewrite.so
après avoir retiré #, la ligne ressemblera à ceci:
LoadModule rewrite_module modules/mod_rewrite.so
Et Apache redémarre
trop tard .. mais pour le bénéficevous pouvez éditer votre fichier .htaccess commenter cette ligne
# RewriteRule ^ index.php [L]
Assurez-vous que mod_rewrite est activé.
restart Apache
et effacer cookies de votre navigateur pour les relire à .htaccess