2015-01-06 83 views
0

也許有人知道我的問題的解決方案。Laravel無法在實時服務器上移動項目url時

在localhost中一切正常。

我買了vps服務器,安裝了Ubuntu和LAMP堆棧。

現在將所有文件從本地主機複製到活動服務器,並向ftp發送。

我在網絡瀏覽器中寫ip/public,我看到我的項目礦路運行良好,但如果我想要像ip/public/login這樣的URL,會引發404錯誤。 (現在只工作公共地址)

公用文件夾中的.htaccess是好的。

現在我發現如果我寫的IP /公/ index.php文件/登錄它工作得很好,但我需要它像在本地主機工作

+0

您的Web文件夾有權'644'? – GuyT

+0

/var/www/html擁有755權限 – lggg3

+1

服務器上的.htaccess是否啓用? – lukasgeiter

回答

0

試着做一個符號鏈接到您的公用文件夾和使用,作爲您的項目的URL。例如,我在我的/var/www/html文件夾中有一個名爲inspections的項目。如果我試圖訪問http://url/inspections我得到一個錯誤:

403 Forbidden: You don't have permission to access /inspections/ on this server. 

但是,調用此命令後:

ln -s /var/www/html/inspections/public /var/www/html/insp 

,妥善導航到http://url/insp頁面顯示,一切工作正常。

要記住的另一件事是app/storage需要寫入權限(至少),以便Laravel正常工作。我通常只是這樣做:

sudo chmod 777 -R app/storage 

要激活所有權限並從那裏開始。希望有所幫助!

+0

我嘗試寫了ln -s/var/www/html/public/var/www/html,但它說ln:無法創建符號鏈接'/ var/www/html/public':文件存在 – lggg3

+0

應該有一個爲您的laravel項目在'var/www/html /'文件夾中創建子文件夾。所以'ln -s/var/www/html/name_of_project/public/var/www/html/new_name' –

+0

但是爲什麼應該在哪個子文件夾下?我在我的vps中只使用一個站點?爲什麼它不能在www/html文件夾中? – lggg3

0

你還檢查是否在此服務器上啓用了mod_rewrite? 也許這個文件夾的Overwrite沒有定義?

嘗試:

<?php in_array('mod_rewrite', apache_get_modules()); ?> 

或者這樣:

<?php die("Enabled: ". strpos(shell_exec('/usr/local/apache/bin/apachectl -l'), 'mod_rewrite') !== false); ?> 

,並檢查是否設置AllowOverride在您的虛擬主機文件中啓用。 文件的位置取決於操作系統和結構。

它看起來有點像這樣:

Options Indexes FollowSymLinks 
AllowOverride All 
Require all granted 
+0

試試你的代碼,所以第二個代碼輸出是1,所以我fink模式在 – lggg3

+0

這很好。你自己設置了Apache和服務器嗎? 如果啓用了Allowoverriding,請檢查您的虛擬主機(該位置取決於您的操作系統和結構)配置。我已經在答案中添加了代碼,以向您展示應該如何使用AllowOverride – SimonEritsch

+0

我試圖找到但我無法找到它,我使用Apache 2.4.7 Ubuntu – lggg3

相關問題