sum*_*tix 7 http nginx mobile-devices static-files useragent
使用nginx,如何为不同的用户代理提供不同的静态文件?例如,如果当前用户正在使用 iPhone,则应为他们提供服务mobile_index.html,而应为所有其他用户代理提供服务browser_index.html。
找到解决方案:
server {
listen 80;
root /var/www;
set $mobile_request '0';
if ($http_user_agent ~ 'iPhone') {
set $mobile_request '1';
}
location =/ {
if ($mobile_request = '1') {
rewrite ^ /mobile_index.html;
}
if ($mobile_request = '0') {
rewrite ^ /browser_index.html;
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您有足够新的 nginx 版本(0.9.6+),您可以使用地图完成此操作:
map $http_user_agent $myindex {
default /browser_index.html;
~iPhone /mobile_index.html;
}
server {
listen 80;
root /var/www;
location = / { rewrite ^ $myindex; }
}
Run Code Online (Sandbox Code Playgroud)
如果您不需要内部重定向(如果您只是为索引提供静态文件,则可能不需要),您可以在重写中添加一个“中断”标志并避免内部重定向。
编辑:如果您使用的是旧版本,则可以执行以下操作:
server {
listen 80;
root /var/www;
location = / {
set $myindex /browser_index.html;
if ($http_user_agent ~ iPhone) {
set $myindex /mobile_index.html;
}
rewrite ^ $myindex;
}
}
Run Code Online (Sandbox Code Playgroud)
再次,如果您不需要内部重定向,请使用中断标志。
| 归档时间: |
|
| 查看次数: |
4150 次 |
| 最近记录: |