これを解決するために、インターネット上のすべての可能なサンプルを調べていました。それでもそれは頭痛です。
www.mylaravelsite.com/public/
の 'public'を避け、ルートディレクトリのwww.mylaravelsite.com
のようにしたいだけです。
今、私はセキュリティの懸念を避けたくないので、.htaccess
が最良の方法であることを学びました。
ソリューションの友達はいますか?
相互作用に感謝します!
サーバーにこのフォルダー構造があると仮定しましょう
.cpanel/
public_html/
public_ftp/
..
そして、laravelフォルダ構造は
app/
bootstrap/
public/
vendor/
composer.json
artisan
..
サーバー上にpublic_html
およびpublic_ftp
フォルダーとインラインでmylaravelsiteフォルダー名を作成し、パブリックフォルダーを除くlaravelアプリケーション全体にコピーして貼り付けることができますすべてのコンテンツはpublic_html
にあるため、次のようになります。
.cpanel/
public_html/
public_html/packages
public_html/vendor
public_html/index.php
public_html/.htaccess
...
public_ftp/
mylaravelsite/
mylaravelsite/app
mylaravelsite/bootstrap
...
public_html/index.php
で、次の行を変更します。
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
に
require __DIR__.'/../mylaravelsite/bootstrap/autoload.php';
$app = require_once __DIR__.'/../mylaravelsite/bootstrap/start.php';
また、/mylaravelsite/bootstrap/paths.php
パブリックパスを変更することを忘れないでください。使用することもできます。
'public' => __DIR__.'/../public',
に
'public' => __DIR__.'/../../public_html',
サイトが実行されている必要があります。
ルートフォルダーに.htaccessを作成し、次の行を記述します
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
実稼働サーバーの場合、ドメインをパブリックフォルダーに直接ポイントすることをお勧めします
不足している情報は次のとおりです。
これは「Webルート」とも呼ばれます。 Apacheは具体的にそれを DocumentRoot と呼びます-公式の説明についてはそのリンクをクリックしてください。
基本的には、サーバーがファイルを取得するディレクトリを設定します。 Laravelでは、ドキュメントルートはpublic
フォルダーである必要があります。
DocumentRootをpublic
に設定すると、ブラウザーでhttp://mylaravelsite.com
に移動すると、実際にpublic
フォルダーを「指す」ことになります。
.htaccessファイル(実際には、 仮想ホスト構成 で可能性が高い)で、サイトのDocumentRoot
を設定できます。
DocumentRoot /path/to/laravel-app/public
これをどのように設定するかは、ホスティングによって異なります。各ホスティングには、ウェブサイトをセットアップするさまざまな方法がありますので、具体的にあなたに答えることはできません。ウェブホスティングテクニカルサポートにご相談ください。重要な点は、public
ディレクトリがWebルートであり、他のすべてが「Webルートの背後」にあることです。
公正な警告tho:一部のホスティングプロバイダーは、それを達成するための十分なアクセス権を提供していません。
webディレクトリをpublic/
にポイントします。 Apacheを使用している場合、これは機能します。
<VirtualHost *:80>
DocumentRoot /var/www.mylaravelsite.com/public/
ServerName www.mylaravelsite.com
</VirtualHost>
ここに解決策がありますが、実際のプロジェクトでそれをしてはいけません、それは単にLaravelと私がlaravel 5.0とそれでテストしましたは、パブリックフォルダーからindex.phpおよび.htaccessファイルを切り取り、ルートディレクトリに貼り付けて、これらの2行を次のように変更します。
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/app.php';
環境をテストせずに上記の方法を使用しないことを強くお勧めします。代わりに仮想ホストを使用する必要があります。
.htaccessファイルをLaravel rootが存在しない場合はrootに追加し、その中に次の行を追加します。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
laravelプロジェクトファイル内の.envファイルを変更するだけです。iflaravel
Root/domain/public_html/laravel /
.envファイルに移動して編集します
アプリのURLパスを編集する必要があります
APP_URL = http://www.domainname.com/laravel/public/
これでプロジェクトが実行されます。 laravelファイルがpublic_htmlにある場合、アプリのURLは次のようになります
APP_URL = http://www.domainname.com
ありがとう
次のようなフォルダパスがあるとしましょう:/ var/www/project/microservice(Lumen src)
/ var/www => localhost /のドキュメントルート
目的のターゲット:localhost/project/microservice [/ foo ...] => localhost/project/microservice/public/foo ...
私はこれを以下のように.htaccess(/ projectフォルダに配置)で行います:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^.*/public/.*
RewriteCond %{REQUEST_URI} ^(/[^/]+/[^/]+/).*
RewriteRule ^[^/]+(.*)$ %1public$1 [L,R=301,P]