2011-10-05 24 views
17

Il file di indice esiste e funziona. Quando creo file .htaccess con la linea SOLO:RewriteEngine su dà errore 403

RewriteEngine On 

Ogni pagina sul server mi dà:

Accesso vietato!

Non si dispone dell'autorizzazione per accedere all'oggetto richiesto. È protetto da lettura o non leggibile dal server.

Se pensi che si tratti di un errore del server, contatta il webmaster. Errore 403 mysite.com mer 5 ottobre 2011 22:25:25 Apache/2.2.3 (Linux/SUSE)

Alcune informazioni server:

Loaded nucleo Moduli prefork http_core mod_so mod_actions mod_alias mod_auth_basic mod_authn_file mod_authz_host mod_authz_groupfile mod_authz_default mod_authz_user mod_authn_dbm mod_autoindex mod_cgi mod_dir mod_env mod_expires mod_include mod_log_config mod_mime mod_negotiation mod_setenvif mod_ssl mod_suexec mod_userdir mod_rewrite mod_php5 versione

Apache:

SERVER_SOFTWARE Apache/2.2.3 (Linux/SUSE)

ha fatto anche questo:

Options FollowSymLinks 

Nella sezione Directory di httpd.conf

Log dice solo fatto di errori, non ragioni:

89.112.xx.x - - [05/Oct/2011:22:32:34 +0200] "GET /info.php HTTP/1.1" 403 1040 "-" "Mozilla/5.0 (Windows NT 6.1; rv:7.0.1) Gecko/20100101 Firefox/7.0.1" 
::1 - - [05/Oct/2011:22:32:45 +0200] "GET/HTTP/1.0" 200 1 "-" "Apache/2.2.3 (Linux/SUSE) (internal dummy connection)" 

Grazie per qualsiasi aiuto!

+0

Controllare sotto il collegamento. Essa vi aiuterà a http://stackoverflow.com/questions/22621643/turning-rewriteengine-on-creates-403-error-how-to-turn-on-followsymlinks#answer-22623427 –

risposta

2

La causa più probabile è che il tuo file conf principale ha le autorizzazioni limitate. Hai una riga del tipo:

<Directory /> 
    AllowOverride None 
</Directory> 

nel tuo file conf principale? Questo ti impedirà di essere in grado di cambiare praticamente qualsiasi cosa usando un file .htaccess.

È possibile trovare ulteriori informazioni su apache permissions sul proprio sito Web.

+0

Sì, c'era line "AllowOverride None", l'ho rimosso, riavviato apache, ma mi dà ancora 403. Ecco la sezione directory corrente: Opzioni FollowSymLinks (Qui era AllowOverride None) ordine negare, permettono negare da tutti Dmitry

+0

Invece di rimuovere la riga AllowOverride, modificarlo in ALL o in un sottoinsieme appropriato della funzionalità desiderata. Ulteriori informazioni su queste opzioni sono disponibili sul sito Web [apache] (http://httpd.apache.org/docs/1.3/mod/core.html#allowoverride) –

+0

Inoltre, devi assicurarti di non averne un altro Dichiarazione di directory che limita le autorizzazioni di Override da qualche parte nei file conf e che l'estensione mod_rewrite è abilitata. –

30

Luogo

Options +SymLinksIfOwnerMatch 

come la prima riga del file .htaccess. Questo ha risolto il problema per me.

+5

'+ FollowSymLinks' è richiesto per il motore di riscrittura. Se guardi in Riscrivi per directory su [apache docs] (http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html) vedrai questo. In alternativa si può usare '+ SymLinksIfOwnerMatch', anche se penso che tutto questo dipenda dalla configurazione di apache, in termini di prestazioni e sicurezza. – upful

+1

'Opzioni + FollowSymLinks' mi ha aiutato. Grazie. –

+3

Ha funzionato come un incantesimo ... Sarei grato se potessi anche spiegare il perché. –

1

Controllare httpd.conf per il blocco di codice. Di default su un Mac è piuttosto restrittivo.Se è solo locale e non si cura di quanto si può aprirlo come:

<Directory /> 
    Options All 
    AllowOverride All 
    Order deny,allow 
    Allow from all 
</Directory> 

che potrebbero aiutare, o, potrebbero essere i permessi dei file stessi. Il file/var/log/apache2/error_log e/var/log/apache2/access_log potrebbero anche darti un po 'più di dettaglio su cosa sta succedendo.