![](/img/trans.png)
[英]How to make Apache serve index.php instead of index.html?
[英]How to serve index.html with Laravel?
我正在努力理解如何使用 Laravel 加載index.html
文件。 它似乎只適用於 index.php,這不是我想要的。
這里有一個問題:
我有兩個文件夾client和server 。 我的服務器文件夾包含整個 Laravel 應用程序。 我的客戶端目錄包含 AngularJS 應用程序。 (我不能使用公共目錄)
我希望 Laravel 為index.html
以及來自客戶端目錄的所有靜態文件提供服務。
更改'public' => __DIR__.'/../public'
確實有些作用,但是它破壞了我的所有路由,即無論我輸入什么 URL index.html
都會加載損壞的靜態資產。 例如/api/users
不再返回 JSON 對象,而是返回相同的index.html
。
我不確定您的文件結構發生了什么,但是,要通過 php 引擎加載 html 文件,您可以使用:
View::addExtension('html', 'php');
然后,
Route::get('/', function()
{
return View::make('index');
});
應該返回 index.html。
我相信我現在明白你了。 這是一個潛在的解決方案,假設目錄結構類似於以下內容:
/
/client
index.html
/server
/app
/bootstrap
/public
/vendor
...
在 Laravel 中使用刀片模板。 你的情況非常獨特,所以它不會是一個“正常”的刀片模板。 它看起來像這樣:
{{ file_get_contents(base_path() . '../client/index.html') }}
如果您可以改用/client
目錄中的index.php
文件,它也可能如下所示:
<?php include base_path() . '../client/index.php'; ?>
我只是指出這一點,因為如果您需要或希望,您可以在文件中使用其他 PHP 語句。 您還可以使用普通的View::make('angular')->with('var', $var)
將數據從控制器一直向下傳遞到這個index.php
文件中,它們將自動在范圍內.
這似乎有點hacky,確實如此,但應該使您不必修改任何其他內容。 當然,您的index.html
文件應該包含 angular 應用程序的整個標記。 另一個好處是,由於您幾乎仍然完全包含在 Laravel 中,如果不需要(無論出於何種原因),您可能會將內容“向上”移出您的 angular 應用程序並返回到框架中。
如果您想使用php artisan serve
serve 為本地開發php artisan serve
,請在“server.php”中更改以下幾行
if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/index.php';
到
if ($uri === '/') {
$uri = "/index.html";
return false;
}
if (file_exists(__DIR__.'/public'.$uri)) {
return false;
}
require_once __DIR__.'/public/api/index.php';
現在您可以將“index.html”作為默認文檔。
僅當 angular 構建輸出位於公共文件夾中且子文件夾中的 laravel api(index.php 和 .htaccess)時才有效。
希望它可以幫助某人!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.