在 Apache htaccess 中有条件地设置标头

And*_*708 4 apache .htaccess

我有一个带有标准.htaccess文件的 PHP Laravel 应用程序,如下所示。

<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>
Run Code Online (Sandbox Code Playgroud)

如果请求的 URL 映射到静态文件,则提供该文件,否则index.php调用。我需要为静态文件添加一组标头,这可能是上述最后两个条件的“其他”。我需要类似下面的伪代码。

if static file
    Header set MyHeaderOne "something"
    Header set MyHeaderTwo "something"
end if
Run Code Online (Sandbox Code Playgroud)

我可以很好地添加标题,但有条件地这样做。我看了一点SetEnvIf,这可能使它成为可能。

那么,我怎样才能为静态文件添加一些标题,即如果请求的文件存在(例如/images/example.jpg)?非常感谢!

Pan*_*ack 8

你可以像你所说的那样做一个条件语句。

<If "%{REQUEST_URI} =~ /\.(gif|jpe?g|png|css|js)$/">
  #put your header set stuff here
</If>
Run Code Online (Sandbox Code Playgroud)

https://httpd.apache.org/docs/2.4/expr.html#examples