2013-03-19 33 views
3

對此我很抱歉,但是我的htdocs根目錄是錯誤的,我無法改變它。所以我必須讓它在/public文件夾中工作。Laravel/public的Apache重寫

我用下面的改寫正常Laravel .htaccess文件:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 

如果我打開http://kemtime2_neu.pr.domain.de/public我重定向到http://kemtime2_neu.pr.domain.de/public/http://kemtime2_neu.pr.domain.de/public/login

我該如何解決這個問題?

我想讓它從http://kemtime2_neu.pr.domain.de/工作,但讓它與http://kemtime2_neu.pr.domain.de/public/一起工作就可以了。

回答

5

我解決了它的一部分。如果我有根的,而不是一個/public用的.htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /public/index.php/$1 [L] 

我可以打開http://kemtime2_neu.pr.domain.de/login但圖像和CSS仍然是錯誤的。我需要首先檢查文件是否存在於/public中。我認爲這是一個new question

3

我用這個職位的3溶液和正常工作:

http://web.archive.org/web/20130320184846/http://forums.laravel.io/viewtopic.php?id=1258

解決方案1 ​​ - 與符號連接備用安裝路徑。

這是首選的解決方案,通常是一個全能的好主意。可以將應用程序安裝到與public_html /無關的文件夾,然後將公用文件夾符號鏈接到public_html /路徑。

例如:

安裝您的應用程序/home/applications/mysite.com

試想一下,你的DocumentRoot指向/var/www/vhosts/mysite.com/httpdocs

刪除然後用mysite.com vhosts文件夾將httpdocs文件夾連接到符號鏈接:ln -s /home/applications/mysite.com/public/var/www/vhosts/mysite.com/httpdocs

解決方案2 - 。modta_htaccess重寫

該解決方案使您能夠將Laravel放入公用文件夾,然後使用.htaccess文件將請求重定向到公用文件夾。該解決方案將您的應用程序和核心繫統代碼放入可公開訪問的文件夾。這不是我們鼓勵你使用任何PHP框架的事情。

第1步將Laravel放入您的文檔根文件夾中。

第2步。將下列.htaccess文件放在文檔根文件夾中。

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{REQUEST_URI} !^public 
    RewriteRule ^(.*)$ public/$1 [L] 
</IfModule> 

第3步:請確保您手動設置應用程序的「網址」配置/配置/ application.php否則Laravel會產生不正確的URL。確保你的每個環境都有正確的application.url配置。有關特定環境配置的詳細信息,請參閱:http://laravel.com/docs/install#environments

解決方案3 - 合併公用文件夾到安裝目錄

該解決方案應用程序和核心繫統代碼放置到可公開訪問的文件夾中。這不是我們鼓勵你使用任何PHP框架的事情。

複製的公共/文件夾的內容到你的Laravel安裝文件夾,然後在您的index.php文件從改變這一行:

require '../paths.php'; 

require 'paths.php'; 

請記住,任何捆綁,圖書館或其他類型的第三方代碼可能無法公開訪問。

注意:還需要注意的是,您的bundles /和public/bundles /目錄現在會發生衝突。使用這種方法時,您可能不想使用工匠的捆綁包:發佈任務,而不知道捆綁包想要發佈的內容。

+2

斷開鏈接_____ – Tebe 2015-03-09 23:11:03

+0

你能解釋一下答案嗎?鏈接被破壞。 – Pathros 2015-03-25 15:37:20

+0

將公共/文件夾的內容複製到Laravel安裝文件夾中,然後在index.php文件中更改此行: require'../paths.php'; 至 需要'paths.php'; 請記住,任何軟件包,庫或其他類型的第三方代碼可能未被設計爲可公開訪問。 – Christian 2015-04-08 13:27:02