1

WebFactions を使用して、Laravel 4 で構築した Web サイトをホストしようとしています。次のようなチュートリアルに成功しています: http://euantor.com/using-laravel-with-webfaction/

インデックス ページは完全に読み込まれますが、リンク先の他のページに問題があるようで、500 エラーが発生します (routes.php が何らかの形で機能していないことを示唆しています)。

調べてみると、webfactions ではアクセスできない apache サーバーの httpd.conf を変更する必要があるようです。laravel が提供する両方の .htaccess ファイルを使用してみました (付属のデフォルトのファイルと、これと同様):

Options +FollowSymLinks
RewriteEngine On

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

しかし、これも問題を解決しているようには見えませんでした。Laravel 4 を webfactions で動作させて、インデックスページを通過するルートが機能するようにする方法を知っている人はいますか?

4

1 に答える 1

5

まず第一に、Laravel を適切に機能させるために、仮想ホストのhttpd.confを変更する必要はありません。

提供された限られた量の情報に基づいて、構成の何が問題なのかを判断することは不可能です。ただし、Webfaction (Webfactions ではありません) の Web サイトから実際の構成例を提供できます。

ディレクトリ構造

/home/myuser
|--> webapps
|  --> mysite  (This is your public web directory)
|--> laravelapps
   --> mysite  (Laravel installation, incl. routes.php)
     --> app
       --> models
       --> views
       --> etc.

セキュリティのために、Web コンテンツと Laravel ファイル用に別のフォルダーを用意する必要があります。つまり、Laravel ファイルと構成を公開 Web ディレクトリに配置しないでください。

Web ディレクトリ

HTTP プロトコル経由で取得する必要があるファイルをこのディレクトリに配置します: webapps/mysite。たとえば、サブディレクトリcssjsimagesなどを作成します。

また、Web ディレクトリのルートに 2 つの Laravel ファイルがあることを確認してください。

  • .htaccess
  • index.php

Web ディレクトリの .htaccess.php

<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>

これにより、すべての Laravel リクエストがindex.phpにリダイレクトされます。行の詳細な説明については、非常によく似た.htaccessに関するこの回答を確認してください:これは WordPress の .htaccess コードです。誰かがそれがどのように機能するか説明できますか?

Web ディレクトリの index.php

このファイルには 2 つの重要なエントリがあります。最初のものはセクションRegister The Auto Loaderにあります。次のようなものがあることを確認してください(相対パスでもかまいません):

require '/home/myuser/laravelapps/mysite/bootstrap/autoload.php';

2 番目の重要なエントリは、Turn On The Lightsセクション内にあります。次のような内容になっていることを確認してください (ここでも、正しく設定されている限り、相対パスにすることができます)。

$app = require_once '/home/myuser/laravelapps/mysite/bootstrap/start.php';

Laravelapps の公開パス

もう 1 つ変更する必要があるのは、セクションPublic Path内の/home/myuser/laravelapps/mysite/bootstrap/paths.phpにあります。次のような yout web フォルダーを指していることを確認してください。

'public' => '/home/myuser/webapps/mysite',

他のもの

上記の設定でうまくいくはずです。ただし、提供された(不足している)情報に基づいて、追加の Laravel 構成ファイル(/home/myuser/laravelapps/mysite/app/configまたはファイルのアクセス許可にある)に関する他の問題を除外することは不可能です。まず上記のことを試してみて、どうなるか教えてください。

于 2013-11-14T23:31:10.287 に答える