公共目录中的文件不应该绕过 Laravel 吗?

时间:2021-02-19 14:57:26

标签: php laravel apache

我有一个 Laravel 8 项目,当我在 public/images 中添加图像时,它们没有出现在我的网页中。当我访问图像的 url 时,有时会找不到文件,有时会得到一些 JSON,有时会得到图像,有时会在同一文件夹中得到完全不同的图像。很奇怪,我可以按刷新,在不同的时间得到不同的结果。

我希望我在 /app/public 中放置的任何内容都设置为文档根目录的 apache 甚至不会触及 Laravel。

我怀疑这是否相关,但是当我对匿名组件进行更改时,我也遇到了奇怪的错误。代码没有问题,如果我转到其他浏览器,它可以工作。我只提到,以防万一它相关并提示某人。

有什么想法吗?我的.htaccess

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews -Indexes
</IfModule>

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]

# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]

1 个答案:

答案 0 :(得分:0)

您应该在问题中包含实际的错误消息,以便更好地了解问题。

无论如何,当请求url指向文件时,您似乎没有正确配置Apache .htaccess文件以绕过laravel index.php文件。下面是在 Laravel 项目中使用的示例 .htaccess 代码(放在 /public 文件夹中):

 <IfModule mod_rewrite.c>
    RewriteEngine On

    # 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>

这将使 Apache 绕过 Laravel 并直接访问以下 URL 的文件: http://www.example.com/images/1.jpg

相关问题