Server kan htaccess-bestand niet lezen, toegang weigeren om veilig te zijn

Ik heb een eenvoudige app gemaakt met AngularJS. Toen ik probeerde om dat project te hosten op mijn website http://demo.gaurabdahal.com/recipefinderwerd het weergegeven de volgende fout:

Verboden

Je hebt geen toestemming om /recipefinder op deze server te openen.
Server kan htaccess-bestand niet lezen, toegang weigeren om veilig te zijn

Maar als ik naar http://demo.gaurabdahal.com/ga, wordt “toegang geweigerd” weergegeven bericht zoals verwacht, dat ik heb afgedrukt. Maar waarom kan het de “receptzoeker” van AngularJS niet openen? Als ik probeerde een eenvoudige HTML-app daar te plaatsen, opent deze prima.

Hetzelfde AngularJS-project werkt prima als ik dat host in github (http://gaurabdahal.github.io/recipefinder )

Ik begrijp niet wat er aan de hand is.


Antwoord 1, autoriteit 100%

Ik had dit probleem ook. Mijn advies is kijk in uw serverfoutlogbestand. Voor mij was het dat de bovenste map voor het project niet leesbaar was. Het foutenlogboek vermeldde dit duidelijk. Een eenvoudige

sudo chmod 755 <site_top_folder>

heeft het voor mij opgelost.


Antwoord 2, autoriteit 15%

Stel de groep van uw openbare directory in op niemand.


Antwoord 3, autoriteit 12%

Dit is een veelvoorkomend probleem met GoDaddy virtuele serverhosting wanneer je een nieuwe website opent.

Ervan uitgaande dat u SSH-toegang tot de server hebt (u moet deze inschakelen op cPanel), logt u in op uw account. Na een succesvolle login, wordt u in de homedirectory van uw account geplaatst. De DocumentRoot voor uw website bevindt zich in een submap met de naam public_html. GoDaddy stelt de machtigingen voor deze map standaard in op 750, maar die machtigingen zijn onvoldoende om Apache de bestanden voor de website te laten lezen. U moet de rechten voor deze map wijzigen in 755 (chmod 755 public_html).

Kopieer de bestanden voor uw website naar de directory public_html (zowel scp als rsync werken voor het kopiëren van bestanden naar een GoDaddy Linux-server).

Zorg er vervolgens voor dat alle bestanden onder public_html voor de hele wereld leesbaar zijn. Gebruik hiervoor deze opdracht:

cd public_html
chmod -R o+r *

Als je andere submappen hebt (zoals css, js en img), zorg er dan voor dat ze voor de hele wereld toegankelijk zijn door zowel lezen als uitvoeren voor toegang tot de wereld in te schakelen:

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

Als laatste heb je een .htaccess-bestand nodig in het public_html-bestand. GoDaddy handhaaft een regel die verbiedt dat de site wordt geladen als je geen .htaccess-bestand in je public_html-map hebt. U kunt vi gebruiken om dit bestand te maken (“vi .htaccess”). Voer de volgende regels in het bestand in:

Order allow,deny
Allow from all
Require all granted

Deze configuratie werkt voor zowel Apache 2.2 als Apache 2.4. Sla het bestand (ZZ) op en zorg ervoor dat het bestand de machtigingen 644 heeft:

chmod 644 .htaccess

Werkt als een tierelier.


Antwoord 4, autoriteit 10%

U moet deze opdrachten uitvoeren in /var/www/html/of een andere map waarin uw project zich bevindt:

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

In mijn geval (apache-webserver) gebruik ik www-datavoor USERen GROUP


Antwoord 5, autoriteit 6%

Elke openbare map geeft toestemming tot 755. Probleem opgelost.


Antwoord 6, autoriteit 3%

GoDaddy gedeelde serveroplossing

Ik had hetzelfde probleem bij het implementeren van een afzonderlijk Laravel-project op subdomeinniveau.

Bestandsstructuur

- public_html (where the main web app resides)
    [works fine]
    - booking.mydomain.com (folder for separate Laravel project)
        [showing error 403 forbidden]

Oplossing

  1. ga naar cPanel van je GoDaddy-account

  2. Bestandsbeheer openen

  3. blader naar de map met de 403 verboden fout

  4. klik in Bestandsbeheer met de rechtermuisknop op de map (in mijn geval booking.mydomain.com)

  5. selecteer Machtigingen wijzigen

  6. selecteer de volgende selectievakjes

    a) user - read, write, execute
     b) group - read, execute
     c) world - read, execute
     Permission code must display as 755
    
  7. Klik op machtigingen wijzigen


Antwoord 7, autoriteit 3%

In linux,

find project_directory_name_here -type d -exec chmod 755 {} \;
find project_directory_name_here -type f -exec chmod 644 {} \;

Het vervangt alle bestanden en maprechten van project_directory_name_hereen de bijbehorende dingen.


Antwoord 8, autoriteit 2%

In mijn geval was apache op de een of andere manier verkeerd geconfigureerd(?) dus moest ik ook machtigingen instellen voor alle bovenliggende mappen. Alleen toestemming instellen voor .htaccess (en de bovenliggende map) werkte niet.


Antwoord 9

Ok, ik heb onlangs hetzelfde probleem ondervonden tijdens het werken aan een WordPress-installatie met behulp van apache2op de server op Ubuntu 20.04.

Ik ondervond dit probleem toen ik het bestandseigendom veranderde in een andere gebruiker:

Dit is wat voor mij werkte:

$ sudo chown -R www-data:www-data /var/www/YOUR-DIRECTORY

Hier is wat meer context over het probleem:

Het bovenstaande commando geeft het eigendom van alle bestanden [in die map] aan de www-datagebruiker en groep. Dit is de gebruiker onder wie de Apache-webserver draait, en Apache moet WordPress-bestanden kunnen lezen en schrijven om de website te bedienen en automatische updates uit te voeren.

Zorg ervoor dat u verwijst naar de relevante directory van uw server (vervang YOUR-DIRECTORYdoor uw werkelijke map).

Je zou deze inzichtelijk artikelover digitalocean.


Antwoord 10

Wat betreft Apache die draait op Ubuntu, de oplossing was om het foutenlogboek te controleren, waaruit bleek dat de fout te maken had met map- en bestandsrechten.

Controleer eerst het Apache-foutlogboek

nano /var/log/apache2/error.log

Stel vervolgens de mapmachtiging in om uitvoerbaar te zijn

sudo chmod 755 /var/www/html/

Stel ook bestandsrechten in om leesbaar te zijn

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

Antwoord 11

Alleen mijn oplossing. Ik had een bestand uitgepakt, had enkele kleine wijzigingen en kreeg de bovenstaande fout. Alles verwijderd, opnieuw geüpload en uitgepakt, en normale zaken.


Antwoord 12

Ik had hetzelfde probleem met Fedora, en ontdekte dat het probleem selinux was.
om te testen of het een probleem is, voer de opdracht uit:
sudo setenforce 0

Anders of verander in bestand /etc/sysconfig/selinux

SELINUX=enforcing
to
SELINUX=disabled

of voeg regels toe aan selinux om http toegang toe te staan


Antwoord 13

Ik had hetzelfde probleem op een rackspeed-server nadat ik de php-versie in het cpanel had gewijzigd. Bleek dat het ook de machtigingen van de map veranderde… Ik heb de machtiging van de map ingesteld op 755 met

chmod 755 folder_name

Antwoord 14

Belangrijke punten in mijn ervaring:

  • elke bron waartoe de server toegang heeft, moet zich in een uitvoerbare en leesbare map bevinden, vandaar de xx5in elke chmod in andere antwoorden.
  • meestal draait de webserver (apache in mijn geval) noch als gebruiker, noch in de groep die eigenaar is van de directory, dus nogmaals xx5of chmod o+rxis nodig.

Maar de grotere conclusie die ik heb getrokken is begin van klein naar meer.

Bijvoorbeeld, als
http://myserver.com/sites/all/resources/assets/css/bootstrap.css
geeft een 403-fout, kijk of http://myserver.com/werkt, dan sites, dan sites/all, dan sites/all/resources, enzovoort.

Het zal helpen als uw server directory-indexen heeft ingeschakeld:

  • In Apache: Options +Indexes

Deze instructie kan ook in de .htaccessvan uw webserver public_html map staan.


Antwoord 15

“Server kan htaccess-bestand niet lezen” betekent precies dat. Zorg ervoor dat de machtigingen voor uw .htaccess-bestand voor de hele wereld leesbaar zijn.

Other episodes