当请求头具有特定值时,通过htaccess重写URL

问题描述 投票:0回答:1

我正在使用 Cloudflare,它有一个名为 CF-IPCountry

请求标头
,其中包含用户访问的国家/地区的值。示例:
DE
代表德国。

在某些情况下我需要提供不同的图像。例如,对于所有用户,法国国旗将通过以下请求加载:

https://example.com/static/img/lang/fr.png

但是,如果

CF-IPCountry
请求标头值为
CA
(加拿大),那么所有对
https://example.com/static/img/lang/fr.png
的请求实际上应该加载此其他文件
https://example.com/static/img/lang/fr-ca.png

我已经为这些访客检测到这些案例:

  • CA
    :加拿大人应该加载
    fr-ca
    而不是法国国旗
    fr
  • BR
    :巴西人应该加载
    pt-br
    而不是葡萄牙国旗
    pt

这个逻辑如何在我的

.htaccess
文件上实现?

更新

根据@CBroe的建议,我想出了两种方法。

1。重定向:

RewriteEngine On
RewriteCond %{HTTP:CF-IPCountry} ^CA$
RewriteRule ^static/img/lang/fr\.png$ https://example.com/static/img/lang/fr-ca.png [L,R=301]

2。提供备用文件:

SetEnvIf CF-IPCountry ^CA$ ServeAlternativeFile=true

<FilesMatch "^static/img/lang/fr\.png$">
    Header set Location "/static/img/lang/fr-ca.png" env=ServeAlternativeFile
    Header set Content-Disposition "attachment; filename=fr-ca.png" env=ServeAlternativeFile
</FilesMatch>
.htaccess url-rewriting http-headers cloudflare
1个回答
0
投票

解决方案

根据@CBroe的建议,我想出了两种方法。

1。重定向:

RewriteEngine On
RewriteCond %{HTTP:CF-IPCountry} ^CA$
RewriteRule ^static/img/lang/fr\.png$ https://example.com/static/img/lang/fr-ca.png [L,R=301]

2。提供备用文件:

SetEnvIf CF-IPCountry ^CA$ ServeAlternativeFile=true

<FilesMatch "^static/img/lang/fr\.png$">
    Header set Location "/static/img/lang/fr-ca.png" env=ServeAlternativeFile
    Header set Content-Disposition "attachment; filename=fr-ca.png" env=ServeAlternativeFile
</FilesMatch>
© www.soinside.com 2019 - 2024. All rights reserved.