2016-02-19 18 views
5

Yerel apache web sunucumda Laravel uygulamasına sunmak istiyorum. Ancak sorun yaşıyorum.laravel'i dağıtmak için apache web sunucusu nasıl yapılandırılır 5

Yaptığım uygulamanın bir apache sunucusunda çalışıp çalışmadığını test etmek için iki yol içeren yeni ve çok basit bir uygulama oluşturdum.

benim tarayıcıdan benim public dizini girmek
Route::group(['middleware' => 'web'], function() { 
    Route::get('/', function() { return view('myview'); }); 
    Route::get('/link', function() { return view('myotherview'); }); 
}); 

, bunun / rota bağlanır, gayet iyi çalışıyor. Ama diğer rotaya (/link) bir bağlantı verdiğimde ve bu rotayı girmeyi denediğimde, 404 hatası bulamıyor.

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

Ben sayfanın kaynağını göstermek

, yukarıdaki satır localhost/mylaravelapp/public/link olarak verilir: Burada /link rotayı ulaşmadan benim myview görünümde vermek bağlantıdır.

Bu sorunu internette araştırdım ve apache mod_rewrite'yi etkinleştirmek için birkaç öneri var. Bunu a2enmod mod_rewrite yazarak da yaptım. Ancak bu aynı sonucu almak için çalışıyor gibi görünmüyor. Bu sorunu nasıl çözebilirim?

Benim laravel sürümüm 5.2, apache 2.4.7 ve xubuntu 14.04 kullanıyorum.

+0

Hangi dosya apache yapılandırma işaret ediyor? – Jerodev

+0

, laravel'i indirdikten sonra .htaccess dosyasına herhangi bir değişiklik yaptı mı? Eğer evet ise, lütfen buraya gönderin. Hayır ise, o zaman nevermind. – naneri

cevap

9

Bu, benim için çalışan normal yapılandırmadır (sahip olduğunuz aynı işletim sistemi, Apache ve Laravel sürümü). Düzenleme apache2 yapılandırma dosyası bu ekleme, (o /etc/apache2/sites-available/000-default.conf altında olmalıdır): "YourDir" Açıkçası /var/www/html yolu altında Klasör olduğunda

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

. Eğer yapılandırma dosyasını modifiye sonra sunucuyu yeniden başlatın

sudo service apache2 restart

Şimdi sevdiği public/.htaccess olması gereken bir şey:

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

Bu yönergeler 2.2'de kaldırıldığı için, Sipariş emri, reddetme/reddetme işlemlerinin Apache 2.4'te nasıl çalışabileceğinden emin değil. Bu satırlar, "Tüm verilenler" ile değiştirilmelidir. ([başvuru] (https://httpd.apache.org/docs/2.4/upgrading.html)) – glomad

+0

Bu yüzden/yourdir klasörü '/ var/www/html/yourdir' olurdu? Bu örnek biraz daha spesifik olsaydı, daha az kafa karıştırıcı olurdu gibi hissediyorum. Burada oturup, tembellikten dolayı bir yol yazıp yazmadığınızı ya da '/ var/www/html' yolunun altındaki klasörünüzü söylerken ne demek istediğinizi anlamadım mı diye merak ediyorum. Bu örnek benim için de çalışmıyor, bu yüzden doğru anladığımdan emin değilim. 'DocumentRoot''/var/www/html' olarak mı bırakılmalıdır? – DuckPuncher

İlgili konular