2013-10-16 15 views
13

Il mio file htaccess funziona su localhost ma non funziona quando lo distribuisco all'istanza EC2.htaccess funziona in localhost ma non funziona nell'istanza EC2

Sto usando Macbook e nel finder non riesco a vedere il file htaccess, ho pensato che forse non è stato copiato nell'istanza EC2 ma non penso che questo sia il problema perché quando copio il progetto posso vedi il file htaccess nel mio editor.

C'è qualcosa che abilita la riscrittura mod nell'istanza di Linux EC2? Se c'è, non l'ho fatto o abilita la riscrittura mod come predefinita?

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php/$1 [L] 
+0

CRONACA - è possibile visualizzare i file invisibili in OS X eseguendo questo comando Terminal e il riavvio del Finder. 'defaults scrivi com.apple.finder AppleShowAllFiles SÌ. – zekel

risposta

6

Per impostazione predefinita, EC2 non ha .htaccess attivato, è necessario modificare httpd.config per consentirne.

In/etc/apache/sites-available/default change AllowOverRide = Nessuno su AllowOverRide = All.

+0

Sì, sono nascosti ma quando copio la cartella i file nascosti sono saltati? Quindi, sto cercando di capire che il problema è che non riesco a copiare il mio file .htaccess sul server. –

+0

Hai provato semplicemente a copiare il contenuto di .htaccess in .htaccess sul server remoto? –

+0

Sto usando istanza Amazon EC2 Linux e non so come farlo. Esiste un file .htaccess diverso nel server oltre a quello copiato? –

2

È un processo in tre fasi

  1. configurare Apache mod_rewrite, eseguire terminale. sudo a2enmod riscrivere

  2. aggiungere il seguente codice a/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.Riavviare apache

/etc/init.d/apache2 restart 
38

I ho riunito alcune informazioni da vari post, quindi ho pensato di dare una risposta.

  1. Come ha commentato Paul, Se stai eseguendo Amazon EC2 Linux, probabilmente stai utilizzando httpd anziché Apache. Il file è quindi in /etc/httpd/conf/httpd.conf
  2. È necessario modificare il file come utente root. (dall'accesso ssh) Effettuare ciò: sudo vim /etc/httpd/conf/httpd.conf (How to edit httpd.conf file in AMAZON EC2)
  3. DocumentRoot "/var/www/html" è stato elencato in due posizioni per me. Ho dovuto cambiare il successivo AllowOverride None a AllowOverride All in questi due posti.
  4. Riavviare apache. Ho riavviato la mia intera istanza di ec2 (ho configurato Apache per l'avvio automatico) anche se il riavvio di apache dovrebbe funzionare. Ma vedo che il cambiamento sta funzionando.

Stavo cercando di apportare le stesse modifiche in un file .htaccess (rimuovendo index.php da urls in un'applicazione di accensione del codice). Spero che sia d'aiuto!

+0

Grazie mille per questo. Per gli altri: ** Il riavvio dell'istanza EC2 da AWS è obbligatorio **. –

+2

Non è necessario riavviare l'intera istanza, è sufficiente riavviare httpd. Puoi farlo tramite la riga di comando con/sbin/service httpd restart – foamcow

+0

Grazie mille per questo. – testuserx

0

Ci sono tre fasi

  1. configurare Apache mod_rewrite, eseguire terminale. sudo a2enmod rewrite

  2. Aggiungere questo codice in questo file dopo aver chiuso il tag VirtualHost/etc/apache2/sites-available/000-default.conf

    DocumentRoot/var/www
    Opzioni FollowSymLinks
    AllowOverride All
    Opzioni indici FollowSymLinks MultiViews
    AllowOverride All
    Ordinare consentire, negare
    permettono da tutto

  3. Restart server apache tramite comando

    servizio sudo apache2 restart

Problemi correlati