如何使用Laravel 5.7修改htaccess文件以正确加载我的资产资源?

时间:2019-01-28 01:57:22

标签: php laravel .htaccess routes laravel-5.7

我正在使用Laravel 5.7。

我已经修改了.htaccess文件,以消除应用程序的公共路径。

问题在于,现在仅从具有一级路径(例如{http://localhost/myapp/home)的页面加载资产,而没有从具有多级例如(http://localhost/myapp/home/example/example2)的页面中加载资产。

我尝试使用laravel自己的函数,例如asset()URL::asset()以及HTML::style()助手,但没有一个能正确加载资产。

此外,我使用了以前项目中的.htacces文件的几个示例,但它们也都没有用。

这是我的.htaccess文件的代码,该文件仅加载一级路由资产

Options -MultiViews -Indexes

RewriteEngine On

# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
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]

如果您有任何问题并能够解决,我将不胜感激,请您提供指导或帮助。

问候同事。

1 个答案:

答案 0 :(得分:0)

您不应更改laravel或.htaccess文件中的任何目录结构。您应该这样做的方法是在laravel项目的public文件夹和服务器中的public_html文件夹之间建立符号链接。 恢复您所做的所有更改,只需像往常一样链接两个文件夹。 例如:

ln -s ~/nameOfProject/public public_html

这样,您就可以保持laravel项目原样,并且所有功能都将保持不变。另外,您还将获得使用git的好处。

PS

您将需要SSH访问,是的,这应该可以在“共享主机服务器”上正常运行。