我试图找到一个解决方案来移除公众'来自laravel 5应用程序中的url。 (localhost / laravelapp / public)
This SO answer非常有用,但由于我使用了资产助手,因此无法找到用于上传文档的css,js和自定义文件夹。所以我不得不尝试不同的答案来找到适合我的那个。虽然有些答案表明删除公用文件夹并不好,但其他人建议重新命名而不是删除它。
我只是想知道是否有任何危险,或者在删除公众时是否遗漏了任何内容。根据我在SO中找到的答案的文件夹。 这就是我做的事情
就像KA_lin的建议一样
将server.php重命名为index.php(无修改)
将.htaccess从public复制到root
将.htaccess更改为以下
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
</IfModule>
现在,css和js文件没有正确加载,根据Sean Perkins的回答,我打开了vendor / laravel / framework / src / Illuminate / Routing / UrlGenerator.php并更改了
public function asset($path, $secure = null)
{
if ($this->isValidUrl($path)) {
return $path;
}
$root = $this->getRootUrl($this->getScheme($secure));
return $this->removeIndex($root).'/'.trim($path, '/');
}
到
public function asset($path, $secure = null)
{
if ($this->isValidUrl($path)) {
return $path;
}
$root = $this->getRootUrl($this->getScheme($secure));
return $this->removeIndex($root).'/public/'.trim($path, '/');
}
现在一切似乎都运转良好。
之后,我还在.htaccess中添加了以下行,因为当我请求localhost / laravelapp / .env时正在查看.env文件
RewriteRule ^.env - [F,L,NC]
现在一切都准备就绪,但我想知道在将网站上传到实时服务器之前是否还有其他预防措施。
我还注意到当我导航到localhost / laravelapp / public时,网站将加载没有css或js的所有内容。 我应该担心吗。
我也没有删除公用文件夹中的.htaccess。我假设它不是问题,因为我在根文件夹中有一个新问题。是否可以删除它。