使用用户代理上的.htaccess将网页重定向到其他网页

时间:2018-07-08 09:54:00

标签: html .htaccess

我正在制作一个Android应用程序(由于父母不允许我支付开发者费用,因此无法将其发布到Play商店),因此,我希望用户能够从以下位置检查应用程序更新:应用程序。

我已经想到了自己的方式,因为我无法实现在互联网上找到的其他方式。

现在,我有一个版本检查页面:“ https://app.brokenhearts.ml/check-update.html”。 另外,还有一个下载更新页面:“ https://app.brokenhearts.ml/updated.html”。

我已经为“ Broken Hearts / 1.0”应用设置了自定义用户代理。到目前为止,这种方法工作正常,因为从应用程序加载网站时,它们正在显示该自定义用户代理。我将使用每个版本更新该应用的用户代理(例如,应用2.0版的用户代理将显示“ Broken Hearts / 2.0”)。

因此,每当用户检查更新时,应用程序都将在Web视图中加载“ https://app.brokenhearts.ml/check-update.html”(用户代理为“ Broken Hearts / 1.0”)。现在,当这是最新更新时,我将不会添加任何特殊的.htaccess规则来重定向它,因此,该应用程序通常会加载“ https://app.brokenhearts.ml/check-update.html”。但是,假设我发布了v2.0,但仍使用v1.0的用户仍将其用户代理设置为“ Broken Hearts / 1.0”,因此,在检查更新时,他们应重定向到“ {{ 3}}”。

因此,基本上,每当我发布该应用程序的更新时,我都会更新其用户代理并更改.htaccess,以将用户从旧的用户代理重定向到“下载更新页面”。因此,来自任何其他用户代理的用户应保持不受影响,并应能够正常加载“版本检查页面”。

所有这些都将基于用户代理和.htaccess。我认为有可能,但是,我只是无法制作正确的.htaccess代码。

编辑:我尝试使用此代码,从Apache文档中找到并根据需要进行了修改:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} "^(Broken Hearts/1\.0)$"
RewriteRule "^/check-version\.html" /updated.html [R=301,]

但是,它会给出HTTP错误500。

1 个答案:

答案 0 :(得分:0)

好吧,我找到了解决方案!

我创建了一个名为“ update”的文件夹,并将.htaccess放入其中。修改为以下内容:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} "^(Broken Hearts/1\.0)$"
RewriteRule ^$ https://app.brokenhearts.ml/updated.html [R,L]

RewriteRule ^$ https://app.brokenhearts.ml/check-version.html [L]

我将应用程序中的更新检查器指向了https://app.brokenhearts.ml/update/

因此,现在,如果用户代理与我的自定义匹配,则可以正确地重定向到更新,如果是最新的,则可以按预期重定向到检查版本。

现在,每当发布更新时,当新规则如下时,我都必须修改.htaccess:

Suoopse,我发布了v3.0更新,并且用户仍在使用1.0和2.0,那么我的新.htaccess将是:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} "^(Broken Hearts/1\.0)$"
RewriteRule ^$ https://app.brokenhearts.ml/updated.html [R,L]

RewriteCond %{HTTP_USER_AGENT} "^(Broken Hearts/2\.0)$"
RewriteRule ^$ https://app.brokenhearts.ml/updated.html [R,L]

RewriteRule ^$ https://app.brokenhearts.ml/check-version.html [L]

我已经尝试过了,而且效果很好。将其发布只是希望有一天能对其他人有所帮助。