htaccess在Laravel中丢失了404张图片

时间:2014-07-31 18:41:54

标签: php .htaccess laravel

如果图像不存在以防止404,则尝试找出显示缺失图像默认图像的最佳方法。我添加了一个htaccess调用,它会显示一个图像,如果找不到图像,但它似乎没有工作。

这是在公共目录中,img文件夹也在公共文件夹中。

<FilesMatch ".(jpg|png|gif)$">
    ErrorDocument 404 "img/no-image-available.gif"
</FilesMatch>

完整的htaccess

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

    RewriteEngine On

    # Redirect Trailing Slashes...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

<ifModule mod_gzip.c>
    mod_gzip_on Yes
    mod_gzip_dechunk Yes
    mod_gzip_item_include file .(html?|txt|css|js|php|pl)$
    mod_gzip_item_include handler ^cgi-script$
    mod_gzip_item_include mime ^text/.*
    mod_gzip_item_include mime ^application/x-javascript.*
    mod_gzip_item_exclude mime ^image/.*
    mod_gzip_item_exclude rspheader ^Content-Encoding:.*gzip.*
</ifModule>

<FilesMatch "\.(jpe?g|png|gif)$">
    ErrorDocument 404 "/img/no-image-available.gif"
</FilesMatch>

2 个答案:

答案 0 :(得分:2)

  1. 在regex中需要转义点。
  2. ErrorDocument需要默认图片的绝对路径,因此必须以/
  3. 开头

    您可以在.htaccess中试用此代码:

    <FilesMatch "\.(jpe?g|png|gif)$">
        ErrorDocument 404 "/img/no-image-available.gif"
    </FilesMatch>
    

    更新:将此代码保留在RewriteEngine On行:

    下方
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule \.(jpe?g|png|gif)$ /img/no-image-available.gif [L,NC]
    

答案 1 :(得分:0)

您是否在apache2.conf中确保将AllowOverride设置为All?

默认设置为None,这意味着在这种情况下将忽略.htaccess。

Ubuntu服务器上的Apache示例

<Directory /var/www/html/>
        Options Indexes FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>