Ios 重定向通配符URL而不更改地址栏

Ios 重定向通配符URL而不更改地址栏,ios,apache,.htaccess,http,ios-universal-links,Ios,Apache,.htaccess,Http,Ios Universal Links,我有一个网站,使用Apple universal链接与其他人共享应用程序事件。在未安装应用程序的设备上打开事件链接时,应显示一个允许用户下载的站点,但也应保持地址不变。原因是,当通用链接在messenger等应用程序中打开时,也会显示此页面,其中会有一个标签,要求用户按“在safari中打开”。按下该按钮必须打开safari中的初始链接才能正确打开应用程序 该网站如下所示: 然后将向用户显示站点: 同时将初始链接保留在地址栏中 我需要使用我的.htaccess文件来完成这项工作,因为我不是自

我有一个网站,使用Apple universal链接与其他人共享应用程序事件。在未安装应用程序的设备上打开事件链接时,应显示一个允许用户下载的站点,但也应保持地址不变。原因是,当通用链接在messenger等应用程序中打开时,也会显示此页面,其中会有一个标签,要求用户按“在safari中打开”。按下该按钮必须打开safari中的初始链接才能正确打开应用程序

该网站如下所示:

然后将向用户显示站点:

同时将初始链接保留在地址栏中

我需要使用我的.htaccess文件来完成这项工作,因为我不是自己托管服务器,而是通过一个webhosting服务,所以更改任何更深层次的设置都很困难

我试图使用
RewriteEngine
RewriteCond
RewriteRule
,通过不带任何运气地查看这些问题:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^/event/.*$
RewriteRule ^(.*)$ http://website.no/invite [P,NC,QSA]
这是一个相当紧迫的问题,我还没有时间了解各种旗帜

**更新**

完全访问:

# Begin

RewriteEngine on

<Files "apple-app-site-association">
ForceType 'application/json'
</Files>

# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]

# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Handle www URLs
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.website\.no [NC]
RewriteRule ^(.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) $1.html [L]

# End
#开始
重新启动发动机
ForceType“application/json”
#处理通配符链接
#重定向匹配301^/event/*$http://www.website.no/invite
重写规则^event/[\w-]+/?$invite[L,NC]
#强制SSL
#处理非www URL
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^网站\.编号[NC]
重写规则^(.*)https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
#处理www URL
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\.website\.no[NC]
重写规则^(.*)https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301]
#处理不带.html扩展名的URL
RewriteCond%{REQUEST_METHOD}^(GET)[NC]
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{DOCUMENT_ROOT}%{REQUEST_URI}.html-f
重写规则^(.*)$1.html[L]
#结束
这样做:

开始
重新编写引擎打开
ForceType“application/json”
#强制SSL
#处理非www URL
重写cond%{HTTPS}=在…上
重写规则^https://%{HTTP_HOST}%{REQUEST_URI}[L,R=301,NE]
#处理通配符链接
#重定向匹配301^/event/*$http://www.website.no/invite
重写规则^event/[\w-]+/?$invite[L,NC]
#处理不带.html扩展名的URL
RewriteCond%{REQUEST_METHOD}^(GET)[NC]
重写cond%{REQUEST_FILENAME}-D
RewriteCond%{DOCUMENT_ROOT}%{REQUEST_URI}.html-f
重写规则^(.*)$1.html[L]
#结束

测试此功能时,请确保清除浏览器缓存。

/linked
有什么关系?如果您没有在要内部重写的目标URL中指定事件id,那么您正在实现的任何逻辑都应该如何猜测事件id?这就好像您没有查看过要使用的工具的文档,只是四处看看。那不行。。。继续,阅读apache重写模块的文档。作为典型的开源软件,它的质量非常好,并且有很好的例子:和。。。这对你来说可能是一个“紧迫”的问题。但请理解,这并不是因为这一点而对我们造成压力。我们在这里回答限定性问题。我们不是免费的代码编写服务,也不是基本教程或文档的替代品。如果苹果(为什么会)对他们的粉丝提出如此严格的要求,那么他们就应该提供帮助,以满足这些要求。谢谢。不过,我想再次指出我写的关于该ID的内容:再次:如果您将一个带有ID的传入请求重写到一个没有ID的目标(
/linked
),那么您的逻辑现在应该如何处理该ID?可能您只需要以下规则:
重写规则^event/[\w-]+/?$invite[L,NC]
,这是有效的,但是为什么要删除关于www URL的部分呢?在这里进行了一些测试之后,我发现如果我键入不包含www的地址,那么您的原始答案在所有设备上都能正常工作。当我包含www时,如果您的www和非www规则只是重定向
http->https
,则规则似乎会被处理www URI的规则覆盖,因此可以将所有规则合并到一个重定向规则中,如我的回答所示。
RewriteEngine on

<Files "apple-app-site-association">
ForceType 'application/json'
</Files>

# Enforce SSL
# Handle non-www URLs
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

# Handle wildcard links
#RedirectMatch 301 ^/event/.*$ http://www.website.no/invite
RewriteRule ^event/[\w-]+/?$ invite [L,NC]

# Handle URLs without .html extension
RewriteCond %{REQUEST_METHOD} ^(GET) [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI}.html -f
RewriteRule ^(.*) $1.html [L]

# End