我正在使用 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>
解决方案
根据@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>