2016-02-19 7 views
5

私のローカルApacheサーバーにLaravelアプリケーションを提供したいと思います。しかし、私は問題があります。laravel 5を展開するためにApache Webサーバーを設定する方法

私が作成したアプリケーションがApacheサーバーで動作するかどうかをテストするには、2つのルートを含む非常に単純な新しいアプリケーションを作成しました。

Route::group(['middleware' => 'web'], function() { 
    Route::get('/', function() { return view('myview'); }); 
    Route::get('/link', function() { return view('myotherview'); }); 
}); 

私は私のブラウザから私のpublicディレクトリを入力すると、それはそれは/ルートに接続し、正常に動作します。しかし、私は他のルート(/link)へのリンクを与え、そのルートを入力しようとすると、エラー404が見つかりませんでした。

<a href="{{ url('/link') }}">Go</a> 

私はページのソースを表示

、上記の行が localhost/mylaravelapp/public/linkとしてレンダリングされます。ここでは /linkルートに達するまで、私は私の myviewビューに与えるリンクがあります。

私はインターネットでこの問題を調査しましたが、Apache mod_rewriteを有効にするためのいくつかの提案があります。私はa2enmod mod_rewriteとタイプしてやっています。しかし、これは動作しているようではなく、同じ結果が得られます。どうすればこの問題を解決できますか?

私のlaravelバージョンは5.2、Apache 2.4.7、xubuntu 14.04を使用しています。

+0

何フォルダあなたのApacheの設定を指していますか? – Jerodev

+0

laravelのダウンロード後に.htaccessファイルを変更しましたか?はいの場合は、ここに投稿してください。いいえの場合は、気にしないでください。 – naneri

答えて

9

これは私のために働く通常の設定です(あなたと同じOS、Apache、Laravelバージョン)。 編集apache2の設定ファイル(それは/etc/apache2/sites-available/000-default.confの下でなければなりません)、この追加:

Alias /yourdir /var/www/html/yourdir/public/ 
<Directory "/var/www/html/yourdir/public"> 
     AllowOverride All 
     Order allow,deny 
     allow from all 
</Directory> 

「YOURDIRは」/var/www/htmlパスの下に明らかに自分のフォルダではどこに。あなたが設定ファイルを変更した後、サーバーを再起動します

sudo service apache2 restart

今のようなあなたのpublic/.htaccessあるべき何か:

RewriteEngine On 
RewriteBase /yourdir/ 

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

# Authorization Headers 
RewriteCond %{HTTP:Authorization} . 
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 

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

Apache 2.4では、 'Order allow、deny' /' all from allow 'が2.2で削除されたため、どのように動作するのか分かりません。これらの行は 'Require all granted'に置き換えてください。 ([reference](https://httpd.apache.org/docs/2.4/upgrading.html) – glomad

+0

/yourdirフォルダは '/ var/www/html/yourdir'でしょうか?この例が少し具体的であれば、混乱が少なくなるような気がします。私は怠惰のためにパスを書き出していないのか、 '/ var/www/html'パスの下にあなたのフォルダがあると言ったらどういう意味なのか分かりませんか?この例は私のために働いていないので、私はそれを正しく理解しているかどうかはわかりません。 'DocumentRoot'は'/var/www/html'のままにしておきますか? – DuckPuncher

関連する問題