在安卓应用中,域名重定向通常由服务器端配置实现,当用户访问旧域名时,服务器返回 HTTP 状态码(如 301/302)并跳转到新域名。
旧域名 | 新域名 | 配置方式 |
---|---|---|
old.example.com |
new.example.com |
在 Nginx 配置文件中添加:server {<br> listen 80;<br> server_name old.example.com;<br> return 301 $scheme://new.example.com$request_uri;<br>} |
旧域名 | 新域名 | 配置方式 |
---|---|---|
old.example.com |
new.example.com |
在 .htaccess 文件中添加:RewriteEngine On<br>RewriteRule ^(.)$ https://new.example.com/$1 [R=301,L] |
若需在客户端(安卓应用)内处理域名重定向(WebView 加载时),可通过以下方式实现:
webView.setWebViewClient(new WebViewClient() { @Override public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { // 检测旧域名并替换为新域名 if (request.isForMainFrame()) { String url = request.getUrl().toString(); if (url.contains("old.example.com")) { String newUrl = url.replace("old.example.com", "new.example.com"); view.loadUrl(newUrl); } } } });
OkHttpClient client = new OkHttpClient.Builder() .addInterceptor(chain -> { Request request = chain.request(); HttpUrl url = request.url(); if (url.host().equals("old.example.com")) { // 构造新 URL HttpUrl newUrl = url.newBuilder() .host("new.example.com") .build(); request = request.newBuilder() .url(newUrl) .build(); } return chain.proceed(request); }) .build();
在安卓设备上修改 Hosts 文件,将旧域名解析到新域名的 IP 地址:
/system/etc/hosts
文件,添加: 456.789.0 old.example.com
(需确保 456.789.0
是新域名的 IP)
问题 | 解决方案 |
---|---|
重定向后 SSL 报错 | 确保新域名已配置有效 SSL 证书,且重定向规则保留协议(HTTP → HTTPS)。 |
应用内部分接口未跳转 | 检查代码中硬编码的旧域名,统一替换为动态获取的配置或新域名。 |
浏览器访问正常,应用异常 | 可能是应用内缓存未更新,尝试清除应用缓存或强制重启应用。 |
解答:
return 301
(永久) vs return 302
(临时)。 [R=301,L]
(永久) vs [R=302,L]
(临时)。解答:
curl -I http://old.example.com
检查响应头是否包含 Location: https://new.example.com
。
在 WebView 或 OkHttp 日志中打印实际请求的 URL