我正在为我的移动网站的根目录获取 404。我的浏览器检测代码会查找移动用户-aget,设置可变标头和 301 到移动站点。
这是主站点配置
server {
listen 80;
server_name www.mydomain.com;
location / {
if ( $is_mobile) {
add_header Vary "User-Agent";
return 301 $scheme://m.mydomain.com$request_uri;
}
}
这是移动站点配置
server {
listen 80;
server_name m.mydomain.com;
root /var/www/mobile;
index index.html;
location / {
try_files $uri $uri/ @dynamic;
}
location @dynamic {
rewrite ^/(.*)$ /index.html last;
}
}
我正在使用 FireFox Override User Agent 扩展进行测试。如果我去 www.mydomain.com 应用程序正确加载。但是,当我切换到移动浏览器时 Nginx 404s。
Nginx 200s 用于手动输入的页面 -
http://m.mydomain.com/index.html
http://m.mydomain.com/about.html
http://m.mydomain.com/pricing.html
由于 index 和 root 都设置了,站点不应该将http://m.mydomain.com/指向http://m.mydomain.com/index.html吗?
如果不是,最好的标准化方法是什么?
更新:为移动检测添加了配置
这是我在主 nginx.conf 文件中用于移动检测的配置
map $http_user_agent $is_desktop {
default 0;
~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
map $is_desktop $is_mobile {
1 0;
0 1;
}