Unter Ubuntu habe ich Laravel und PHP installiert. Wenn ich jedoch die IP meines Servers in den Browser eingebe, werden nur Dateien und Ordner angezeigt.

Ubuntu 16.04, PHP 7.4, Apache2

Dies ist mein Ordner /var/www/html/myproj/:

root@srv:/var/www/html/myproj# ls
CHANGELOG.md  bpl            laradock      routes      webpack.mix.js
README.md     composer.json  package.json  server.php
app           composer.lock  phpunit.xml   storage
artisan       config         public        tests
bootstrap     database       resources     vendor

Was muss ich noch tun?


Dies ist die Datei laravel.conf in /etc/apache2/sites-available:

<VirtualHost *:80>
    ServerName yourdomain.tld

    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html/myproj/public

    <Directory /var/www/html/myproj>
        AllowOverride All
        <RequireAll>
            Require ip 127.0.0.1 xxx.xx.xx.xx
        </RequireAll>
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

.htaccess sieht folgendermaßen aus:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>
-1
Robert 6 Feb. 2020 im 17:16

3 Antworten

Beste Antwort

Angenommen, Sie verwenden Apache2, müssen Sie verschiedene Dinge tun. Versuchen Sie zunächst, den öffentlichen Pfad in Ihrem Browser zu öffnen. Beispiel: http://localhost/public

Wenn das Problem weiterhin besteht, überprüfen Sie in Ihrer Serverkonfiguration, ob die Datei .htaccess behandelt wird. Diese Eigenschaft muss in der Konfiguration apache2 festgelegt werden:

 AllowOverride All

Hier ist ein Beispiel mit dem Standard-Webserverordner:

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

Im Allgemeinen ist dieser Wert standardmäßig auf None festgelegt. Ändern Sie ihn daher in All.

Um dies zu tun, müssen Sie die Erweiterung mod_rewrite aktiviert haben. Geben Sie im Linux-Terminal Folgendes ein:

sudo a2enmod rewrite
sudo service apache2 restart
2
user12852653user12852653 6 Feb. 2020 im 14:28

Wenn Sie Nginx verwenden, versuchen Sie die folgenden Einstellungen:

server {
    listen         80 default_server;
    listen         [::]:80 default_server;
    server_name    example.com www.example.com;
    root           /var/www/html/myproj/public;
}
0
Dmitry 6 Feb. 2020 im 14:34

Konfigurieren Sie die nginx vhost-Datei in point / public folder und fügen Sie in der vhost-Datei eine Laravel-Umschreiberegel hinzu

0
Shiva Gupta 6 Feb. 2020 im 14:22