laravel 5.4删除公共表单URL无法正常工作

时间:2017-10-17 15:03:30

标签: php laravel .htaccess laravel-5 laravel-5.4

我已将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现在工作正常,它没有网址,但是

asset()
public_path()

功能无法正常工作。 css,js,图像调用不正确。

{{ asset('assets/css/custom.css') }}

以上代码对所有custom.css都不起作用,之前它正常工作。 如果我添加公共而不是正常工作,但这不是正确的方法。

{{ asset('public/assets/css/custom.css') }}

让我知道如何在这些功能中全局添加公共。

我还尝试使用此引用删除url,但它不起作用。 How can I remove “public/index.php” in the url generated laravel?

1 个答案:

答案 0 :(得分:0)

我做了三件事来解决这个问题。

我将此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> 

这解决了我的问题