web-dev-qa-db-ja.com

サーバーがhtaccessファイルを読み取れないため、アクセスを安全に拒否しています

AngularJSを使用して簡単なアプリを作成しました。私のウェブサイトでそのプロジェクトをホストしようとすると http://demo.gaurabdahal.com/recipefinder は次のエラーを表示します:

禁止

このサーバーの/ recipefinderにアクセスする権限がありません。サーバーがhtaccessファイルを読み取れないため、アクセスを安全に拒否しています

しかし、 http://demo.gaurabdahal.com/ にアクセスすると、期待どおり「access denied」メッセージが表示されます。しかし、AngularJSプロジェクトの「レシピ検索」を開くことができないのはなぜですか。そこに簡単なHTMLアプリを配置しようとすると、うまく開きます。

同じAngularJSプロジェクトは、githubでそれをホストするとうまく機能します( http://gaurabdahal.github.io/recipefinder

何が悪いのか理解できません。

40
Saurab

私もこの問題を抱えていました。私のアドバイスは、サーバーエラーログファイルを調べることです。私にとっては、プロジェクトの最上位ディレクトリが読めないということでした。エラーログにはこれが明確に記載されています。シンプルな

Sudo chmod -R 755 <site_top_folder>

私のためにそれを修正しました。

90
swedge218

これは、新しいWebサイトを立ち上げる際のGoDaddy仮想サーバーホスティングの一般的な問題です。

サーバーへのSSHアクセスがあると仮定して(cPanelで有効にする必要があります)、アカウントにログインします。ログインに成功すると、アカウントのホームディレクトリに移動します。 WebサイトのDocumentRootは、public_htmlという名前のサブディレクトリにあります。 GoDaddyはこのディレクトリのアクセス許可をデフォルトで750に設定しますが、ApacheがWebサイトのファイルを読み取るにはこれらのアクセス許可では不十分です。このディレクトリの権限を755(chmod 755 public_html)に変更する必要があります。

Webサイトのファイルをpublic_htmlディレクトリにコピーします(scpとrsyncの両方がファイルをGoDaddy Linuxサーバーにコピーします)。

次に、public_htmlの下のすべてのファイルが誰でも読み取り可能であることを確認します。これを行うには、次のコマンドを使用します。

cd public_html
chmod -R o+r *

他のサブディレクトリ(css、js、imgなど)がある場合は、読み取りと実行の両方をワールドアクセスで有効にして、それらがワールドアクセス可能であることを確認します。

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

最後に、public_htmlファイルに.htaccessファイルが必要です。 GoDaddyは、public_htmlディレクトリに.htaccessファイルがない場合、サイトの読み込みを禁止するルールを実施します。 viを使用してこのファイル(「vi .htaccess」)を作成できます。ファイルに次の行を入力します。

Order allow,deny
Allow from all
Require all granted

この設定は、Apache 2.2とApache 2.4の両方で機能します。ファイル(ZZ)を保存し、ファイルに644のアクセス許可があることを確認します。

chmod 644 .htaccess

魅力のように機能します。

19
David Stoddard

パブリックディレクトリのグループをnobodyに設定します。

18
Mycelin

これらのコマンドは、/var/www/html/またはプロジェクトが存在する他のディレクトリで実行する必要があります。

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

私の場合(Apache Webサーバー)userおよびgroupにはwww-dataを使用します

13
Vahid

GoDaddy共有サーバーソリューション

基本的に、サブドメインレベルで別のLaravelプロジェクトをデプロイしようとすると、同じ問題が発生しました。

ファイル構造

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

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

Solution

  1. goDaddyアカウントのcPanelに移動します
  2. ファイルマネージャーを開く
  3. 403禁止エラーを示すフォルダーを参照します
  4. ファイルマネージャーで、フォルダー(私の場合はbooking.mydomain.com)を右クリックします。
  5. 権限の変更を選択します
  6. 次のチェックボックスを選択します

    a) user - read, write, execute
    b) group - read, execute
    c) world - read, execute
    
    Permission code must display as 755
    
  7. 権限の変更をクリックします

仕事完了!

2
Armand

私の場合、Apacheは何らかの形で間違って構成されていたため、すべての親ディレクトリにもアクセス許可を設定する必要がありました。 .htaccess(およびその親ディレクトリ)に許可を設定するだけでは機能しませんでした。

2
MilanG

ちょうど私のソリューション。ファイルを抽出し、いくつかの小さな変更を加え、上記のエラーが発生しました。すべてを削除し、再びアップロードして抽出し、通常の業務を行いました。

0
user2060451