2014-07-25 180 views
3

我最近開始學習Laravel,但有一個問題,我不知道它爲什麼會發生。我目前的Laravel項目位於wamp/www/codebright。當我訪問localhost/codebright/public時,我看到Laravel的歡迎頁面。Laravel基本路由返回404

當我創建一個簡單的路由:

Route::get('my/page', function() 
{ 
    return "Harro world"; 
}); 

,並試圖訪問: localhost/codebright/public/my/page它與404錯誤返回,甚至不Laravel錯誤。我也嘗試訪問:localhost/codebright/my/page仍然。

但是,如果我輸入CMD php artisan serve並在8000端口上打開一個服務器,然後訪問: localhost:8000/my/page它工作得很好。我想知道爲什麼我的第一個方法沒有artisan命令不起作用。

在此先感謝!

這似乎是,如果你有安裝XAMPP,沒有如上文和回答的評論部分中提到的問題發生。基本上,如果你使用XAMPP,你很可能不會得到任何錯誤,程序將工作得很好。

回答

3

確實有可能做你想做的事情,但如果你不使用artisan serve你必須有一個web服務器設置正確。從你原來的職位,你顯然有一個網絡服務器設置爲你的歡迎頁面,但在我看來像下列之一:

  • 你沒有.htaccess文件到位
  • 你的基地虛擬主機(或者,如果不使用虛擬主機的Apache配置)Web服務器上的安裝程序不AllowOverride All(這是需要讓.htaccess文件工作)
  • 您不必mod_rewrite開啓

您應該檢查日退出。至少,Laravel需要一種方法將不存在的URI作爲真實文件(my/page)轉換爲可以僞造頁面的內容。這非常需要使用mod_rewrite.htaccess文件來指定規則。


使用Apache和artisan serve之間的差異的說明:artisan serve不使用Apache一個「啞巴」的網絡服務器,而是使用PHP內置Web服務器,其具有的如何處理「不存在」的URI知識你瀏覽到,這就是爲什麼你不需要mod_rewrite.htaccess文件。

+0

好的,這解釋了這個問題。任何建議?我應該使用什麼? 'php artisan serve'或者直接訪問我的'public'文件夾。另請參考我的網絡應用程序最終會使用的主機。我的意思是當我的網站存儲在我的主機公司時,我無法在我的網站上運行'php artisan serve',因此我必須訪問'public'目錄,對嗎?如何修復我的文件,以便它能正常工作? – kfirba

+0

絕大多數託管服務提供商都會爲您的虛擬主機安裝'mod_rewrite' *和*'AllowOverride All',允許您使用'.htaccess'文件。我的觀點是,對於整個PHP應用程序來說,這是一個普遍的要求(Laravel在這裏並不特別,這些要求並不瘋狂),他們都支持它 - 如果他們不需要一個新的主機。 – alexrussell

+0

在本地,你可以做你想做的事情,儘管我會建議你試着正確地設置你的Apache環境(爲了節省每次在網站上工作時都要做的事情) - 這可能只是一個' sudo a2enmod rewrite'命令行,然後檢查在您的Apache配置中設置了「AllowOverride All」。 – alexrussell

0

您是否爲您的laravel項目創建了虛擬主機?

如果沒有在這裏是如何在窗口

第1步創建的虛擬主機:打開阿帕奇的conf文件

apache\conf\extra\httpd-vhosts.conf 

添加下面的代碼在最後一行。

<VirtualHost *:80> 
    ServerName www.mark-thomas.loc 
    DocumentRoot E:\wamp\www\codebright\public 
    SetEnv APPLICATION_ENV "development" 
    <Directory E:\wamp\www\codebright\public> 
     DirectoryIndex index.php 
     AllowOverride All 
     Order allow,deny 
     Allow from all 
    </Directory> 
</VirtualHost> 

E:\wamp\www\codebright\public是你laravel應用程序的路徑,你可以用你的文件夾路徑替換它。

第2步: 開路>的Windows \ SYSTEM32 \ DRIVERS \等\主機

添加您的IP地址,IP地址

192.168.1.231 www.laravel.loc

重啓名單你的apache服務器打到http://www.laravel.loc/my/page。現在你會看到你的消息!

+0

嘿!你的解決方案和'php artisan serve'有什麼區別?他們都創建了一個可以工作的網絡服務器。你們創建'http:// www.laravel.loc',另一個'localhost:8000'。我只是問是否可以從'public'目錄下工作,這樣我就可以輸入'localhost/codebright/public/my/page'而不是設置虛擬主機並鍵入'localhost:8000/my/page'。謝謝! – kfirba