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

问题描述 投票:-1回答:1

我正在制作一个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”)。

因此,每当用户检查更新时,应用程序将在webview中加载“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”,因此,在检查更新时,它们将被重定向到“https://app.brokenhearts.ml/updated.html” 。

因此,基本上,每当我发布应用程序更新时,我都会更新其用户代理并更改.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。

html .htaccess
1个回答
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]

我试过了它,它的工作原理。发布它只是希望有一天它可能会帮助别人。

© www.soinside.com 2019 - 2024. All rights reserved.