Pubblicare progetto MVC in remoto

  • Creatore Discussione Creatore Discussione cleto
  • Data di inizio Data di inizio

cleto

Nuovo Utente
28 Feb 2012
14
0
1
Ciao, studiando il pattern MVC ho realizzato piccolo progetto con questa struttura:

ROOT
-> app
-> controllers
-> core
-> models
-> views

-> public
-> index.php (il file gestisce tutte le richieste)

URL in locale:


etc. etc.

in remoto cosa devo fare per 'eliminare' la cartella public dall'URL? e avere quindi:





Grazie mille e saluti
 
Ciao, studiando il pattern MVC ho realizzato piccolo progetto con questa struttura:

ROOT
-> app -> controllers
-> core
-> models
-> views

-> public
-> index.php (il file gestisce tutte le richieste)

URL in locale:


etc. etc.

in remoto cosa devo fare per 'eliminare' la cartella public dall'URL? e avere quindi:





Grazie mille e saluti
 
Per "nascondere" la cartella `public` dall'URL e rendere il tuo sito accessibile direttamente alla radice del dominio, puoi utilizzare alcune tecniche di configurazione del server web. Di seguito ti fornisco un esempio di come farlo utilizzando il file `.htaccess` per un server Apache.

1. Assicurati di avere abilitata la mod_rewrite di Apache sul tuo server.

2. Crea un file `.htaccess` nella directory radice del tuo progetto (la stessa directory in cui si trova la cartella `public`), se non esiste già.

3. All'interno di questo file `.htaccess`, puoi aggiungere le regole di riscrittura delle URL che reindirizzeranno tutte le richieste al tuo file `index.php` nella cartella `public`.

Ecco un esempio di come potrebbe apparire il tuo file `.htaccess`:

```apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php [L]
```

Queste regole di riscrittura reindirizzeranno tutte le richieste che non corrispondono a un file o a una directory esistente al tuo file `index.php` nella cartella `public`.

Inoltre, dovrai assicurarti che le risorse come fogli di stile, script JavaScript, immagini, ecc. siano correttamente caricate utilizzando percorsi relativi nella tua applicazione. Ad esempio, invece di usare un percorso assoluto come `/public/css/stile.css`, dovresti utilizzare un percorso relativo come `css/stile.css`.

Infine, assicurati di configurare correttamente le impostazioni del server web per puntare alla directory corretta come radice del tuo sito. Questo può essere fatto tramite la configurazione del server (ad esempio, il file `httpd.conf` per Apache) o attraverso il pannello di controllo del tuo provider di hosting, se lo stai utilizzando.
 
  • Like
Reactions: cleto
Per "nascondere" la cartella `public` dall'URL e rendere il tuo sito accessibile direttamente alla radice del dominio, puoi utilizzare alcune tecniche di configurazione del server web. Di seguito ti fornisco un esempio di come farlo utilizzando il file `.htaccess` per un server Apache.

1. Assicurati di avere abilitata la mod_rewrite di Apache sul tuo server.

2. Crea un file `.htaccess` nella directory radice del tuo progetto (la stessa directory in cui si trova la cartella `public`), se non esiste già.

3. All'interno di questo file `.htaccess`, puoi aggiungere le regole di riscrittura delle URL che reindirizzeranno tutte le richieste al tuo file `index.php` nella cartella `public`.

Ecco un esempio di come potrebbe apparire il tuo file `.htaccess`:

```apache
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/index.php [L]
```

Queste regole di riscrittura reindirizzeranno tutte le richieste che non corrispondono a un file o a una directory esistente al tuo file `index.php` nella cartella `public`.

Inoltre, dovrai assicurarti che le risorse come fogli di stile, script JavaScript, immagini, ecc. siano correttamente caricate utilizzando percorsi relativi nella tua applicazione. Ad esempio, invece di usare un percorso assoluto come `/public/css/stile.css`, dovresti utilizzare un percorso relativo come `css/stile.css`.

Infine, assicurati di configurare correttamente le impostazioni del server web per puntare alla directory corretta come radice del tuo sito. Questo può essere fatto tramite la configurazione del server (ad esempio, il file `httpd.conf` per Apache) o attraverso il pannello di controllo del tuo provider di hosting, se lo stai utilizzando.
Perfetto...danke
 
Ciao, in genere negli mvc c'è un file di configurazione o qualcosa del genere chiamato "router" o similari, questo contiene le rotte o link dell'applicazione. Ora non so com'è fatto quello tuo, presumo che quel public serva a qualcosa, proverei a capire perchè sta li e nel caso agirei per ottimizzare il sistema di routing.
 
Ciao, grazie prima tutto.
Si ho router chiamato app.php in:
root->app->core->app.php
in public:
root -> public ho il css, il js , le immagini, i font, etc e l'entry point index.php

Seguendo contributo di Fra_23 ho risolto creando 2 file .htaccess :
root->.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
</IfModule>

e altro file .htaccess:
root->public->.htaccess

<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine On
RewriteBase /public
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
</IfModule>

Magari può essere utile a qualcuno.
Danke a tutti.
 

Discussioni simili