首页 > 解决方案 > Htaccess 重定向取决于操作系统

问题描述

1-我需要这种情况的 .htaccess 代码如果用户点击:website1.download 或 website2.download 它会根据用户的操作系统重定向用户,例如:

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>

标签: phpwordpressapache.htaccessserver

解决方案


好吧,我会去的example.comexample.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_HOSTvs。SERVER_NAME

说了这么多,我想不出这样做的充分理由。从 SEO 的角度来看,您最终将隐藏 3 个重定向中的 2 个,因为蜘蛛会存储它们在给定 URL 中找到的信息,如果更改,则最近的更改获胜。从用户的角度来看,人们大多受过点击商店徽章的培训,我不会介绍一些新奇的东西。如果您尝试跟踪点击,我只会使用 JS。


推荐阅读