2015-04-23 4 views
8

Ich habe eine Linux-Box mit Centos 6.6 mit Apachen 2.2.x Aus einem unbekannten Grund verursacht das Einschalten der Rewrite-Engine einen Fehler 403 (dies passiert, ob ich eine Rewrite-Regel hinzufügen oder nicht).Apache RewriteEngine Ein Ursachen 403 Fehler

Ich habe Stunden damit verbracht, dies zu recherchieren und habe Änderungen an meiner Konfiguration in Übereinstimmung mit Ratschlägen vorgenommen, die ich an vielen Orten gefunden habe, aber immer noch nicht weitergekommen bin.

Zeit in meinem .htaccess Ich habe diese:

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

In den Richtlinien für den virtuellen Host, ich habe dies:

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 

(Dies scheint in einer Debian-Box zu arbeiten, aber nicht für meine Centos Maschine.)

In meinem httpd.conf habe ich

geändert

AllowOverride None

zu

AllowOverride All

meine httpd.conf enthält auch LoadModule rewrite_module modules/mod_rewrite.so

Fehlerprotokoll sagt:

Optionen FollowSymLinks oder SymLinksIfOwnerMatch ausgeschaltet ist, was bedeutet, dass RewriteRule Richtlinie verboten ist: /var/www/html/example.uk

Jetzt habe ich hinzugefügt zuvor SymLinksIfOwnerMatch die Richtlinien, aber es hat nicht lösen das Problem.

Ich folgte this und alles schien zu gehen, wie es sollte.

+0

welcher Seite werden Sie die 403 bekommen? Haben Sie eine Indexdatei an diesem Ort? –

+0

@PanamaJack die Wurzel. Es gibt dort eine index.php, die gut ausschaut, wenn ich auskommentiere RewriteEngine On –

+0

überprüfen Sie Ihre Apache-Log-Datei und sehen Sie, welcher Fehler es sagt, warum Sie bekommen 403 –

Antwort

1

Sie sollten diese Linie von .htaccess entfernen

Options +FollowSymLinks 

Sie haben es bereits in der Apache vhost-Datei. Auch wenn du eine Regel hinzufügen solltest, wenn du mod_rewrite anschaltest oder es keinen Sinn macht, es einzuschalten.

+0

Habe es einfach ausprobiert. Hat nicht funktioniert. –

+0

Haben Sie einen Rewriter hinzugefügt? –

+0

hinzugefügt 'RewriteCond% {SERVER_PORT} 80 RewriteRule^(. *) $ Https://example.uk/$1 [R, L]' immer noch 403 Fehler –

1

Dies geschieht, wenn Apache nicht über Rechte

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

Run ausführen für:

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

Ich habe dies versucht und Apache neu gestartet. Es hat immer noch nicht funktioniert. –

+0

Haben Sie es geschafft, es zu reparieren? –

+0

Nein, habe immer noch das Problem. –

2

Seit Apache-Version> = 2.4 Richtlinie

Order allow,deny 
allow from all 

zu einem globalen 403 führt , um dies sicherzustellen, wenn Sie Ihr Apache-Protokoll überprüfen:

[Di Mai 05 11:54:32.471679 2015] [authz_core: error] [pid 9497] [client 127.0.0.1:35908] AH01630: Client von Server-Konfiguration verweigert:/path/to/web/

Kommentar Richtlinie Order und fügen Require all granted wie unten:

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

Hoffe diese Hilfe.

Edit:

explanation from apache Dieses Verhalten wird durch neues Modul zur Verfügung gestellt mod_authz_host

Für Liste der Beschränkung verfügbar (ip, Host, etc.) http://httpd.apache.org/docs/2.4/en/mod/mod_authz_host.html

+0

Danke, aber das führte zu einem Fehler von 500. Ich denke, ich muss einfach die Verwendung von .htaccess vergessen und stattdessen PHP verwenden. –