繁体   English   中英

laravel 5.4删除公共形式的URL不能正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM