[英]laravel 5.4 removing public form url not working properly
我已将server.php文件重命名为index.php并添加了.htaccess代码,如下所示
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
url现在可以正常工作,没有url即可工作,但是
asset()
public_path()
功能无法正常工作。 css,js,图片未正确调用。
{{ asset('assets/css/custom.css') }}
上面所有custom.css的代码均无法正常运行,之前一直在正常工作。 如果我添加public则它不能正常工作,但这不是正确的方法。
{{ asset('public/assets/css/custom.css') }}
让我知道如何在这些功能中全局添加public。
我也尝试使用此引用删除url,但是它不起作用。 如何在生成的laravel中删除“ public / index.php”?
我要做三件事来解决这个问题。
我将此htaccess
文件放在我的项目根文件夹中
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ public/$1 [L]
</IfModule>
而这个.htaccess
配置位于我的公用文件夹中,即project-folder/public
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
然后将我的虚拟主机配置定义为
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/path/projectfolder/public"
<Directory "/path/projectfolder/public">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require All
</Directory>
</VirtualHost>
这为我解决了问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.