1

VPS サーバーをセットアップし、Laravel プロジェクトをセットアップしようとしています。/public_html/Web サイトの URL にアクセスしたときに表示される index.html を含むフォルダーがあります。

  • 次の場所にlaravelプロジェクトがあります。/public_html/project_one/
  • 元の index.php は次の場所にあります。/public_html/project_one/public/index.php

デフォルトで Web サイトを Laravel project_one に表示したいのですが、昨日からこれを文字通り 4 時間グーグルで検索し、stackoverflow ですべてのソリューションを試しましたが、何も機能しませんでした。 .

質問:

/public_html/私のLaravelプロジェクトにリダイレクトするように内部で.htaccessをセットアップする方法を知っている人はいますか?

Laravel フォルダーを次の場所にアップロードする必要/public_html/project_one/がありましたが、もっと良い場所はありますか?

Laravel プロジェクトを表示するメイン URL が必要です。Laravelwww.mainurl.comproject_one/public/index.phpファイルも同様です。/project_one/URLに書かれたくない!

好奇心から、今アクセスするwww.mainurl.com/project_oneと、403禁止が表示されます。

失敗したソリューション

/public_html/ に .htaccess を追加しようとしました:

DirectoryIndex index.php

#Redirect to /project_one/public if you haven't already and the IP is okay
RewriteCond %{REMOTE_ADDR} ^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} !^/project_one/public
RewriteRule ^(/lucaphoto)?(.+) /project_one/public$2 [L]

#if IP does not match and you ARE in the folder, then Redirect to root
RewriteCond %{REMOTE_ADDR} !^1\.2\.3\.4*
RewriteCond %{REQUEST_URI} ^/project_one/public
RewriteRule .? / [R=301,L]

これは私に本当に奇妙なことを教えてくれます:

  1. Chrome の場合: www.mainurl.com/project_one にリダイレクトされます -> そして、403 禁止エラーが表示されます。**
  2. サファリの場合:どこにもリダイレクトされませんが、次のエラーが表示されます:

禁断。このサーバーの / にアクセスする権限がありません。

さらに、ErrorDocument を使用して要求を処理しようとしたときに、404 Not Found エラーが発生しました。

Laravel 独自の .htaccess ファイル

ちなみに、Laravelには独自の.htaccessファイルがあります/project_one/public/.htaccess。次のようになります。

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
4

1 に答える 1

0

実際の laravel アプリケーション ( public フォルダー以外のもの) は公開されていないため、 public ( public_html ) フォルダー内に配置しないでください。

私は実際にあなたのセットアップに似たものを実行するために厳しいことを試みました。私の結論は、.htaccessファイルを変更するだけで、パブリックフォルダー内でlaravelを実行するのに十分であるということでした。

laravel アプリケーションをすばやくセットアップするための最も簡単なソリューションは、パブリック フォルダーを直接指すサブドメインを使用することです。

www.mainurl.com /* points to .../public_html/ */
laravel.mainurl.com /* points to .../laravel/public/ OR ( but not good ) */
/* points to .../public_html/my-project/public/ */

実際に行う必要があるのは、ドメイン/サブドメインのルートを別のフォルダーを指すように変更することです。その場合、.htaccess への変更は必要ありません。

アップデート

サイトがwww.example.comで、このサイトを開いたときに laravel アプリを表示したい場合、2 つのオプションがあります。

  1. laravels パブリック フォルダーのコンテンツを public html に配置し、パブリック フォルダーの代わりに public_html に合わせて参照を変更します。

  2. サーバー上のファイル構造が .../var/stuff/.../public_html/ のような場合は、すべてを ../var/stuff/my-project にアップロードしてから、ホスティング サービスのインターフェイスに移動し、 ../var/stuff/my-project/public フォルダーと、laravel コードで何も変更しなくてもすべて問題ありません。( .env 以外)

したがって、実際の問題は、ドメインがアプリの public フォルダーではなく、フォルダー public_html を指していることです。ただし、アプリを public_html に直接配置しないでください。それと並行して配置し、ドメインが指す場所を変更してください。

ホスティング会社に関する情報を提供していただければ、ガイドを提供できるかもしれません

于 2016-07-01T05:23:05.083 に答える