Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Laravel Url Rewrite

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139

    Laravel Url Rewrite

    Ciao a tutti,

    Sto sviluppando un'applicazione Laravel 8 su un server Ubuntu 22.04 con apache2 & mariadb.
    Ho effettuato il deploy dell'applicazione all'interno del percorso /var/www/html e qui ho clonato dalla repo git il progetto laravel.
    Ho quindi configurato il virtual host di apache2, il file .env e tutto funziona correttamente.

    Ho però il seguente problema, le rotte vengono raggiunte specificando l'url completo http://IP_SITO/public/index.php/...rotte... mentre vorrei fossero raggiungibili come http://IP_SITO/...rotte...

    Avete suggerimenti o consigli?

    - Configurazione virtual host apache:
    codice:
    <VirtualHost *:80>
    ServerAdmin myadmin    
    ServerName myservername    
    DocumentRoot /var/www/html/public    
    <Directory /var/www/html/public>
    Options +FollowSymlinks       
    AllowOverrideAll
    Requireall granted    
    </Directory>
    ErrorLog${APACHE_LOG_DIR}/error.log   
    CustomLog${APACHE_LOG_DIR}/access.log combined
    </VirtualHost>
    .htaccess
    codice:
      GNU nano 6.2                                                                                         .htaccess                                                                                                  
    <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]
    
    
        # Send Requests To Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^$ public/index.php [L]
        RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
    </IfModule>

  2. #2
    Usa .htaccess originale e cambia la configurazione del webserver in modo da far puntare la document root alla cartella public.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Usa .htaccess originale e cambia la configurazione del webserver in modo da far puntare la document root alla cartella public.
    Ciao Filippo, grazie per la risposta
    Quindi se ho ben capito, in che modo dovrei modificare il file del virtual host apache? Così come è configurato non si riferisce già a public?

    Potresti farmi un esempio?

  4. #4
    Se si riferisce già a public, perchè nell'.htaccess hai questo codice?

    codice:
        RewriteRule ^$ public/index.php [L]
        RewriteRule ^((?!public/).*)$ public/$1 [L,NC]

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da filippo.toso Visualizza il messaggio
    Se si riferisce già a public, perchè nell'.htaccess hai questo codice?

    codice:
        RewriteRule ^$ public/index.php [L]
        RewriteRule ^((?!public/).*)$ public/$1 [L,NC]
    Non capendo perché non mi effettuava il rewrite ho cercato online, e tra le possibili soluzioni ho trovato l'aggiunta di queste righe di codice nell'.htaccess

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Qualcosa di questo tipo con i percorsi da adattare ai tuoi
    codice:
    <VirtualHost *:80>
        ServerAdmin admin@mio.test
    	DocumentRoot "C:/xampp/htdocs/mio/public"
    	ServerName mio.test
    	ServerAlias *.mio.test
    	ErrorLog "logs/mio.test-error.log"
    	CustomLog "logs/mio.test-access.log" common
    	
    	<Directory "C:\xampp\htdocs\mio">
    		Order allow,deny
    		Allow from all
    	</Directory>
    </VirtualHost>
    <VirtualHost *:443>
    	DocumentRoot "C:/xampp/htdocs/mio/public"
    	ServerName mio.test
    	ServerAlias *.mio.test
    	SSLEngine on
    	SSLCertificateFile "C:/xampp/htdocs/cert/mio.test/server.crt"
    	SSLCertificateKeyFile "C:/xampp/htdocs/cert/mio.test/server.key"
    	 
    	<Directory "C:\xampp\htdocs\mio">
    		Order allow,deny
    		Allow from all
    	</Directory>
    </VirtualHost>

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2016
    residenza
    Italy
    Messaggi
    139
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Qualcosa di questo tipo con i percorsi da adattare ai tuoi
    codice:
    <VirtualHost *:80>
        ServerAdmin admin@mio.test
        DocumentRoot "C:/xampp/htdocs/mio/public"
        ServerName mio.test
        ServerAlias *.mio.test
        ErrorLog "logs/mio.test-error.log"
        CustomLog "logs/mio.test-access.log" common
        
        <Directory "C:\xampp\htdocs\mio">
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    <VirtualHost *:443>
        DocumentRoot "C:/xampp/htdocs/mio/public"
        ServerName mio.test
        ServerAlias *.mio.test
        SSLEngine on
        SSLCertificateFile "C:/xampp/htdocs/cert/mio.test/server.crt"
        SSLCertificateKeyFile "C:/xampp/htdocs/cert/mio.test/server.key"
         
        <Directory "C:\xampp\htdocs\mio">
            Order allow,deny
            Allow from all
        </Directory>
    </VirtualHost>
    Grazie mille, adesso risponde quando tento l'https però non mi riconosce il certificato e mi da connessione non sicura, senza la possibilità di procedere comunque sul sito quando provo l'https.
    Può derivare dal fatto che il certificato sia autogenerato?

    Mentre riguardo il rewrite dell'url....avrei dovuto risolvere con la configurazione del virtual host o devo ancora agire sull'.htaccess

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Il file .htaccess generato dall'indtallazione di Laravel lascialo senza modifiche.
    Il certificato lo hai anche installato o solo generato i file? Non basta puntare ai file generati.

  9. #9
    Per levare "index.php" solitamente si usa questo, nell'htaccess
    codice:
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    192
    Se Apache utilizza mod_rewrite (quando funziona, permessi o consentito etc o abilitato etc.) Pretty URLs significa che il file index.php interpreta ciò che gli viene passato. Il file predefinito public/.htaccess dice se non una directory e non un file regolare e se index.php rimuovi. https://laravel.com/docs/5.0/configuration#pretty-urls
    Mentre solitamente /index.php/ ($_SERVER['PATH_INFO']) funziona come mod_rewrite ma usa /index.php/ nel suo percorso @Dascos, per mod_rewrite l'unica sintassi valida è ciò che dice il doc di laravel sebbene @EziT90 mostra /index.php/ nel suo percorso cioè il tuo codice è corretto probabilmente non sta utilizzando mod_rewrite e in realtà vuole utilizzare mod_rewrite.
    Effettivamente effettuare il redirect da public/index.php a index.php significa anche modificare il file index.php (e anche altri file) altrimenti i percorsi definiti tramite codice non corrispondono.
    Nel caso di dubbio puoi utilizzare https://www.ssllabs.com/ssltest/anal...ww.example.com (se usi un DNS e i certificati sono installati)
    Ultima modifica di darbula; 28-10-2022 a 19:42

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.