Der Server kann die htaccess-Datei nicht lesen und verweigert den sicheren Zugriff


76

Ich habe eine einfache App mit AngularJS erstellt. Als ich versuchte, dieses Projekt auf meiner Website http://demo.gaurabdahal.com/recipefinder zu hosten, wird der folgende Fehler angezeigt:

verboten

Sie haben auf diesem Server keine Berechtigung zum Zugriff auf / prescriptionfinder. Der Server kann die htaccess-Datei nicht lesen und verweigert den sicheren Zugriff

Wenn ich jedoch zu http://demo.gaurabdahal.com/ gehe, wird erwartungsgemäß die Meldung "Zugriff verweigert" angezeigt, die ich gedruckt habe. Aber warum kann AngularJS nicht "Rezeptfinder" öffnen? Wenn ich versucht habe, eine einfache HTML-App dort zu platzieren, wird sie problemlos geöffnet.

Das gleiche AngularJS-Projekt funktioniert einwandfrei, wenn ich es in github hoste ( http://gaurabdahal.github.io/recipefinder ).

Ich kann nicht verstehen, was los ist.



Selbst wenn ich die Dateiberechtigung auf 777 setze, funktioniert es nicht.
Saurab

96
Jedes Mal chmod 777, wenn Sie dies tun , stirbt irgendwo auf der Welt ein Kätzchen
Janos

1
Wenn es vorher funktioniert hat und das aus heiterem Himmel passiert, versuchen Sie zuerst, Apache neu zu starten. Keine Todeskätzchen mehr.
Sglessard

Antworten:


156

Ich hatte auch dieses Problem. Mein Rat ist, in Ihrer Serverfehlerprotokolldatei nachzuschauen. Für mich war das oberste Verzeichnis für das Projekt nicht lesbar. Das Fehlerprotokoll hat dies eindeutig angegeben. Eine einfache

sudo chmod 755 <site_top_folder>

habe es für mich behoben.


Dies liegt daran, dass der Pfad Ihres Systemordners nicht richtig eingestellt zu sein scheint. Bitte öffnen Sie die folgende Datei und korrigieren Sie diese: index.php

9
In meinem Fall wurde das oberste Verzeichnis auf 750 gesetzt (nicht sicher warum), es in 755 geändert und es funktionierte
Paolo

Das <site_top_folder>ist am wichtigsten. Sie sollten dem ROOT-Ordner die Berechtigung erteilen. Es hat gut funktioniert. Vielen Dank.
Chaminda Bandara

WARUM -R??? Dies ändert auch die Berechtigung aller Dateien ...
Schwarz

24

Setzen Sie die Gruppe Ihres öffentlichen Verzeichnisses auf "Niemand".


22

Dies ist ein häufiges Problem beim Hosting von virtuellen GoDaddy-Servern, wenn Sie eine neue Website aufrufen.

Angenommen, Sie haben SSH-Zugriff auf den Server (Sie müssen ihn auf cPanel aktivieren), melden Sie sich bei Ihrem Konto an. Nach erfolgreicher Anmeldung werden Sie in das Ausgangsverzeichnis Ihres Kontos gestellt. Der DocumentRoot für Ihre Website befindet sich in einem Unterverzeichnis mit dem Namen public_html. GoDaddy setzt standardmäßig die Berechtigungen für dieses Verzeichnis auf 750, aber diese Berechtigungen reichen nicht aus, damit Apache die Dateien für die Website lesen kann. Sie müssen die Berechtigungen für dieses Verzeichnis in 755 (chmod 755 public_html) ändern.

Kopieren Sie die Dateien für Ihre Website in das Verzeichnis public_html (sowohl scp als auch rsync funktionieren zum Kopieren von Dateien auf einen GoDaddy Linux-Server).

Stellen Sie als Nächstes sicher, dass alle Dateien unter public_html weltweit lesbar sind. Verwenden Sie dazu den folgenden Befehl:

cd public_html
chmod -R o+r *

Wenn Sie über andere Unterverzeichnisse verfügen (z. B. CSS, JS und IMG), stellen Sie sicher, dass diese für die Welt zugänglich sind, indem Sie sowohl Lesen als auch Ausführen für den Weltzugriff aktivieren:

chmod o+rx css
chmod o+rx img
chmod o+rx js

Zuletzt benötigen Sie eine .htaccess-Datei in der public_html-Datei. GoDaddy erzwingt eine Regel, die das Laden der Site verbietet, wenn sich in Ihrem Verzeichnis public_html keine .htaccess-Datei befindet. Sie können vi verwenden, um diese Datei zu erstellen ("vi .htaccess"). Geben Sie die folgenden Zeilen in die Datei ein:

Order allow,deny
Allow from all
Require all granted

Diese Konfiguration funktioniert sowohl für Apache 2.2 als auch für Apache 2.4. Speichern Sie die Datei (ZZ) und stellen Sie sicher, dass die Datei die Berechtigung 644 hat:

chmod 644 .htaccess

Klappt wunderbar.


2
sicher, dass chmod 644 .htaccess sehr wichtig ist, sonst funktioniert es nicht! :)
Aufleuchten

15

Sie müssen diese Befehle in /var/www/html/einem anderen Verzeichnis ausführen, in dem sich Ihr Projekt befindet:

sudo chgrp -R group ./
sudo chown -R user:group ./
find ./ -type d -exec chmod 755 -R {} \;
find ./ -type f -exec chmod 644 {} \;

In meinem Fall (Apache-Webserver) verwende ich www-datafür userundgroup



6

Gemeinsame GoDaddy-Serverlösung

Ich hatte das gleiche Problem beim Versuch, ein separates Laravel-Projekt auf Subdomain-Ebene bereitzustellen.

Dateistruktur

- public_html (where the main web app resides)
    [works fine]

    - booking.mydomain.com (folder for separate Laravel project)
        [showing error 403 forbidden]

Lösung

  1. Gehen Sie zu cPanel Ihres GoDaddy-Kontos

  2. Öffnen Sie den Dateimanager

  3. Navigieren Sie zu dem Ordner, in dem 403 verbotene Fehler angezeigt werden

  4. Klicken Sie im Dateimanager mit der rechten Maustaste auf den Ordner (in meinem Fall booking.mydomain.com).

  5. Wählen Sie Berechtigungen ändern

  6. Aktivieren Sie die folgenden Kontrollkästchen

     a) user - read, write, execute
     b) group - read, execute
     c) world - read, execute
    
     Permission code must display as 755
    
  7. Klicken Sie auf Berechtigungen ändern


4

In meinem Fall war Apache irgendwie falsch konfiguriert (?), Also musste ich auch Berechtigungen für alle übergeordneten Verzeichnisse festlegen. Nur das Setzen der Berechtigung auf .htaccess (und das übergeordnete Verzeichnis) hat nicht funktioniert.


2

Bei Apache unter Ubuntu bestand die Lösung darin, das Fehlerprotokoll zu überprüfen, aus dem hervorgeht, dass der Fehler mit der Ordner- und Dateiberechtigung zusammenhängt.

Überprüfen Sie zunächst das Apache-Fehlerprotokoll

nano /var/log/apache2/error.log

Stellen Sie dann die Ordnerberechtigung so ein, dass sie ausführbar ist

sudo chmod 755 /var/www/html/

Stellen Sie außerdem die Dateiberechtigung so ein, dass sie lesbar ist

sudo chmod 644 /var/www/html/.htaccess

1

Nur meine Lösung. Ich hatte eine Datei extrahiert, einige kleinere Änderungen vorgenommen und den obigen Fehler erhalten. Alles gelöscht, hochgeladen und wieder extrahiert und normales Geschäft.


0

Ich hatte das gleiche Problem mit Fedora und stellte fest, dass das Problem Selinux war. Um zu testen, ob es sich um ein Problem handelt, führen Sie den folgenden Befehl aus: sudo setenforce 0

Andernfalls oder in der Datei / etc / sysconfig / selinux ändern

SELINUX=enforcing
to
SELINUX=disabled

oder fügen Sie selinux Regeln hinzu, um den http-Zugriff zu ermöglichen


-1

Wichtige Punkte meiner Erfahrung:

  • Jede Ressource, auf die der Server zugreift, muss sich in einem ausführbaren und lesbaren Verzeichnis befinden, daher xx5in jedem chmod in anderen Antworten.
  • Die meiste Zeit läuft der Webserver (in meinem Fall Apache) weder als Benutzer noch in der Gruppe, der das Verzeichnis gehört, also erneut xx5oder chmod o+rxist notwendig.

Aber die größere Schlussfolgerung, zu der ich gelangt bin, ist , von wenig zu mehr zu beginnen.

Wenn zum Beispiel http://myserver.com/sites/all/resources/assets/css/bootstrap.css ergibt sich ein 403 - Fehler, ob http://myserver.com/funktioniert, dann sites, dann sites/all, dann sites/all/resources, und so weiter.

Es ist hilfreich, wenn auf Ihrem Server Verzeichnisindizes aktiviert sind:

  • In Apache: Options +Indexes

Diese Anweisung befindet sich möglicherweise auch im .htaccessOrdner public_html Ihres Webservers.


Da die Frage bereits gestellt wurde, werde ich hier posten, dass ich plötzlich denselben Fehler auf einem System erhalte, das vor einiger Zeit ausgeführt wurde. Laut Apache2 error.log wird offenbar nach einer .htaccess-Datei in / var / www gesucht, wenn dort noch nie eine vorhanden war. Es gibt jedoch eine in / var / www / html und andere in den Site-Ordnern. Warum ein plötzlicher Fehler? Ich verwende Ubuntu 19.10.
DonP

-1

Ich hatte das gleiche Problem auf einem Rackspeed-Server, nachdem ich die PHP-Version im Cpanel geändert hatte. Es stellte sich heraus, dass es auch die Berechtigungen des Ordners geändert hat ... Ich habe die Berechtigung des Ordners auf 755 mit gesetzt

chmod 755 folder_name

-9

"Server kann htaccess-Datei nicht lesen" bedeutet genau das. Stellen Sie sicher, dass die Berechtigungen für Ihre .htaccessDatei weltweit lesbar sind.


1
Auf einem Unix- oder Linux-Host? chmod 644 .htaccess
200_erfolg
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.