php - Htaccess 重定向取决于操作系统
问题描述
1-我需要这种情况的 .htaccess 代码如果用户点击:website1.download 或 website2.download 它会根据用户的操作系统重定向用户,例如:
- 如果在 PC 上,请重定向到http://google.com/
- 如果在 Android 上,请重定向到https://play.google.com/store
- 如果在 iOS 上,请重定向到https://www.apple.com/ios/app-store/
2- 我的主机中有多个网站,我需要为主机中的所有网站创建一个 .htaccess,我可以在哪里创建 .htaccess 文件?
那是 htaccess 代码,它不起作用:
<If "req('Host') = 'website1.download' && = 'website2.download'">
# turn on rewrite engine
RewriteEngine on
# only detect smart phone devices if we are not on mobile site
# to prevent redirect looping
RewriteCond %{HTTP_HOST} !^https://google.com/$
# Android
RewriteCond %{HTTP_USER_AGENT} "android" [NC]
# redirect to google play
RewriteRule .? https://play.google.com/store%{REQUEST_URI} [L,R=302]
# iOS
RewriteCond %{HTTP_USER_AGENT} "android" [NC]
# redirect to app store
RewriteRule .? https://www.apple.com/ios/app-store/%{REQUEST_URI} [L,R=302]
</If>
解决方案
好吧,我会去的example.com
,example.net
因为这就是他们的目的。另外,我假设这些域指向您的服务器,并且它们也都已绑定到它。最后,我假设您已经有了设备检测模式?你的问题不是很清楚。(如果你不这样做,你可能只是基于谷歌和这个线程。)
您可以堆叠RewriteCond
并加入它们OR
RewriteCond %{HTTP_HOST} example.com [NC,OR]
RewriteCond %{HTTP_HOST} example.net [NC]
RewriteCond %{HTTP_USER_AGENT} "android" [NC]
RewriteRule .? https://play.google.com/store%{REQUEST_URI} [L,R=302]
从技术上讲,这也是一个正则表达式,因此应该注意特殊字符以及更具体的字符,添加子域支持并将所有内容合并到一个条件中。
RewriteCond %{HTTP_HOST} ^(www\.)?example\.(com|net)$ [NC]
RewriteCond %{HTTP_USER_AGENT} "android" [NC]
RewriteRule .? https://play.google.com/store%{REQUEST_URI} [L,R=302]
还有一个你应该注意的HTTP_HOST
vs。SERVER_NAME
说了这么多,我想不出这样做的充分理由。从 SEO 的角度来看,您最终将隐藏 3 个重定向中的 2 个,因为蜘蛛会存储它们在给定 URL 中找到的信息,如果更改,则最近的更改获胜。从用户的角度来看,人们大多受过点击商店徽章的培训,我不会介绍一些新奇的东西。如果您尝试跟踪点击,我只会使用 JS。
推荐阅读
- powershell - PowerShell 导入模块 ActiveDirectory 需要 15 秒以上才能加载
- flutter - 当我禁用它时清除 TextFormField 的错误样式?
- python - 如何从 Maya Python 脚本调用 JSX 脚本?
- typescript - 具有不同通用值的 JSON 对象
- c# - C# Excel Interlop Error HRESULT: 0x800A03EC with some Formula, not all
- python - 在没有循环的情况下从 Python 中的离散概率分布矩阵中采样
- docker - 有没有办法在 VSCode Devcontainers 中调试 PostCreateCommand?
- json - “刷新”不断更新的配置文件的正确方法是什么?
- sql-server - 查询只返回当前月份
- javascript - 我不能在codepen上使用matter js