私はLaravelをWebアプリケーション用に使用しています。プロダクションですべてをアップロードし、ファイルの一部にURLで直接アクセスできることを確認しました - たとえば、http://example.com/composer.json設定ファイルを直接アクセスから隠すには?
このような直接アクセスを避けるにはどうすればよいですか?
私はLaravelをWebアプリケーション用に使用しています。プロダクションですべてをアップロードし、ファイルの一部にURLで直接アクセスできることを確認しました - たとえば、http://example.com/composer.json設定ファイルを直接アクセスから隠すには?
このような直接アクセスを避けるにはどうすればよいですか?
Webサーバーの設定が間違っています。 Webサーバーをpublic
ディレクトリに移動し、再起動します。 nginxのについては
DocumentRoot "/path_to_laravel_project/public"
<Directory "/path_to_laravel_project/public">
、あなたはこの行を変更する必要があります:Apacheはあなたはこれらのディレクティブを使用することができますについては
ことをやった後
root /path_to_laravel_project/public;
を、すべてのLaravelファイルにはアクセスできませんもうブラウザから。
ドキュメントルートをpublic
ディレクトリに設定すると、他のファイルに直接アクセスすることはできません。あなたのapache/nginx /でそれを探しますか?設定ファイル。
私はApacheを使用しています。しかし、私はこのパブリックフォルダを自分のURLに表示したくありません。ドキュメントルートを公開すると、私は/ publicを私のURLに使用することになります。 –
@ YasenIvanovあなたの苦情が何であるか分かりません。確か現時点では、URLの先頭に '/ public /'を使用する必要がありますか?ドキュメントルートをパブリックディレクトリに設定した場合、**にはなりません**。なぜあなたはすべてのURLの先頭に '/ public /'をつけたいのですか? – Chris
私は/ public /を自分のURLにつけたくありません - それは私が言ったことです。ドキュメントルートをパブリックディレクトリに設定すると、このようなアクセス権を得ることはできません - http://domain.com - "禁止されています"と表示されます。私がhttp://domain.com/publicと入力すれば、私はアクセス権を持っています。問題は、私のURLからthis/public /を削除する方法です。 –
これは間違っています。 composer.json
はpublic
ディレクトリの外にあり、アクセスできないようにしてください。つまり、VirtualHostの設定が間違っています。
ディレクトリへのパスの末尾が、/public
であることを確認してください。
私はserver.phpの名前をindex.phpに変更し、.htaccessファイルをルートディレクトリに追加したためだと思います。そのようにURLからpublic.index.phpを削除するのは間違っていますか? –
変更しないでください。 'index.php'と' .htaccess'は 'public'ディレクトリにのみなければなりません。 –
実行中のウェブサーバーによって異なります。 Apacheの場合は.htaccessファイル、Nginxの場合はサーバ設定ファイルで処理されます。
.htaccessのファイルも拒否できます。
Apacheでは、Laravelプロジェクトのルートディレクトリに.htaccessファイルを作成して、すべての要求をpublic /ディレクトリに書き換えることができます。パブリックフォルダを持っていない、あなたはすでにルートフォルダを指している場合は、プロジェクトのルートフォルダ内の公開ディレクトリにWebサーバが
project root folder/public
しかし、あなたが拒否することができ
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
ポイント次のコードを.htaccess
ファイルに書き込んでアクセスしてください。上記のコードで
<Files ".env">
Order Allow,Deny
Deny from all
Allow from 127.0.0.1
</Files>
、最初我々はすべてから拒否されて実行取得する自サーバ(サーバへのローカルホスト)からのみ可能、したがって我々は、外部のユーザーからそれを保護することができます。
は、単にconfigディレクトリに
のindex.php
空白のファイルを作成し、あなたがacccessorユーザーに
元を知らせるために好きなようにファイルにメッセージを書き込みます。サーバによるアクセスforbindon
しかし、共有ホスティングはどうですか?どうやってそれをするの? @アレクセイ - メゼニン –