2015-04-23 12 views
8

Ho una scatola Linux con CentOS 6.6 con Apache 2.2.x Per qualche motivo sconosciuto, l'accensione del motore di riscrittura causa un errore 403 (questo accade se aggiungo o meno una regola di riscrittura).Apache RewriteEngine On causa errore 402

Ho passato ore a cercare questo e ho apportato modifiche alla mia configurazione in base ai consigli che ho trovato in molti posti, ma non ho ancora ottenuto nulla.

Attualmente nel mio .htaccess ho questo:

<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
</IfModule> 

Nelle direttive per l'host virtuale, ho questo:

DocumentRoot /var/www/html/example.uk 
<Directory /var/www/html/example.uk> 
Options Indexes FollowSymLinks MultiViews 
AllowOverride All 
Order allow,deny 
allow from all 
</Directory> 
ServerName example.uk 
ServerAlias www.example.uk 

(Questo sembra funzionare in una scatola di Debian, ma non per la mia macchina CentOS.)

Nel mio httpd.conf ho cambiato

AllowOverride None

a

AllowOverride All

mio httpd.conf contiene anche LoadModule rewrite_module modules/mod_rewrite.so

log di errore dice:

Opzioni FollowSymLinks o SymLinksIfOwnerMatch è spento il che implica che la direttiva RewriteRule è vietato: /var/www/html/example.uk

Ora, ho già aggiunto SymLinksIfOwnerMatch alle direttive, ma non ha risolto il problema.

Ho seguito this e tutto sembrava andare come doveva.

+0

quale pagina stai ottenendo il 403? Hai un file di indice in quella posizione? –

+0

@PanamaJack alla radice. C'è un index.php lì, che viene visualizzato correttamente se commento RewriteEngine su –

+0

controlla il tuo file di log apache e vedi quale errore sta dicendo perché stai ricevendo 403 –

risposta

1

Si dovrebbe rimuovere questa riga da .htaccess

Options +FollowSymLinks 

Hai già nel file apache vhost. Inoltre se dovessi aggiungere una regola se hai intenzione di attivare mod_rewrite o non ha senso attivarlo.

+0

Ho appena provato. Non ha funzionato –

+0

Hai aggiunto un rewriter? –

+0

aggiunto 'RewriteCond% {SERVER_PORT} 80 RewriteRule^(. *) $ Https://example.uk/$1 [R, L]' ha ancora errore 403 –

1

Questo accade quando Apache non ha eseguito i diritti per

/var 
/var/www 
/var/www/html 
/var/www/html/example.uk 

Run:

chmod o+x /var /var/www /var/www/html /var/www/html/example.uk 
+0

Ho provato questo e riavviato apache. Ancora non ha funzionato. –

+0

Hai maneggiato per risolverlo? –

+0

No, ha ancora il problema. –

2

Dalla versione apache> = direttiva 2,4

Order allow,deny 
allow from all 

porta ad una globale 403 , per assicurarti di controllare se sei un log di apache:

[Tue May 05 11:54:32.471679 2015] [authz_core: Errore] [PID 9497] [cliente 127.0.0.1:35908] AH01630: client negata dalla configurazione del server:/path/to/web/

direttiva commento Order e aggiungere Require all granted come sotto:

Require all granted 
#Order allow,deny 
#allow from all 

Spero che questo aiuto.

Edit:

explanation from apache Questo comportamento è fornita dal nuovo modulo mod_authz_host

Per l'elenco delle restrizioni disponibili (ip, padrone di casa, ecc) http://httpd.apache.org/docs/2.4/en/mod/mod_authz_host.html

+0

Grazie, ma il risultato è stato un errore di 500. Penso che dovrò semplicemente dimenticare di usare .htaccess e usare PHP invece. –

Problemi correlati