我试图弄清楚如何设置Apache Tomcat服务器以为具有深层链接的角度应用程序提供服务。例如:
静态服务器在收到对mysite.com/的请求时,通常会返回index.html。但是它拒绝mysite.com/heroes/42并返回404-Not
Found错误,除非将其配置为返回index.html。
我想在localhost / angular上提供angular应用,我尝试了以下方法:
1)用以下方法构建角度应用程序:
ng build --prod --base-href .
2)将构建文件夹的内容(默认:dist)复制到$ ApacheLocation / webapps / angular
3)在$ ApacheLocation / conf / Catalina / localhost /
rewrite.config中添加RewriteRules
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^\/angular\/.*$ /angular/index.html
4)在主机标签正下方添加阀门
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve"/>
5)启动Tomcat服务器并转到localhost / angular将给我:
未捕获到的SyntaxError: 所有.js软件包(例如main.bundle.js)的 意外令牌 <
如果我不包括重写规则,tomcat将按预期提供localhost / angular的服务, 但会在深度链接上提供404。
我的设置配置:
我设法通过以下步骤解决了此问题,例如http:// localhost:8080 / angular / player / detail /
4
:
1)使用以下命令构建角度应用程序:ng build –prod -bh ./ -d / angular
2)将已构建应用的内容复制到$ ApacheLocation / webapps / angular
3)重写规则:
RewriteCond %{REQUEST_PATH} !-f
RewriteRule ^/angular/(.*) /angular?path=$1
4)在app.component.ts上的设置导航:
constructor(private activatedRoute: ActivatedRoute, private router: Router) { }
ngOnInit() {
const path = this.activatedRoute.snapshot.queryParams['path'];
const navigateTo = '/' + path;
if (path) {
this.router.navigate([navigateTo]);
}
}
您可以在这里找到测试项目:https :
//github.com/avuletica/test
重写规则说明:
# %{REQUEST_PATH} corresponds to the full path that is used for mapping.
# ! NOT character
# '-f' (is regular file) Treats the TestString as a pathname and tests whether or not it exists, and is a regular file.
# ^ matches the beginning of the string or line
# . matches any charceter except line breaks
# * match 0 or more of the preceding token
因此,基本上,如果在/ angular/anything上没有文件,tomcat会将完整路径作为查询字符串发送到angular应用程序,并且从该查询参数angular处理路由。
我在Android上使用了一个用Ionic构建的应用程序中的deep link。当我点击链接时,应用程序打开了,但仅仅一秒钟后就崩溃了。如何调试此问题? 这是AndroidManifest.xml中的意图代码: 更新 通过使用Android Studio,我有以下日志:
我想为我的cordova android应用程序启用应用程序索引,如下所述:https://developers.google.com/app-indexing/webmasters/app 不幸的是,我找不到留档如何做一个科尔多瓦的应用程序。有一个插件收听和广播意向,但我不认为这将帮助我在这种情况下:https://github.com/Initsogar/cordova-webintent 我
我在苹果应用商店里有一个应用程序,它可以流式传输一个直播电台,并提供一个播放过的曲目列表。用户可以导航到列表中的特定音轨,点击按钮,用户通过,使用搜索路线(以下示例)被引导到Spotify: spotify://search/artistName 直到最近,这项功能一直运作良好(搜索艺术家姓名的准确率约为85%)<代码>Spotify打开,但我收到一个本机警报: 无法打开链接Spotify无法在此
我想创建一个深层链接,当用户按下一个共享按钮,我分享这样的链接-(例如网址)https://www.myapp.com/Home_page(我已经购买了一个域,我的应用程序也可以在播放商店),并希望当用户点击此链接时,他们应该重定向到我的应用程序的Home_page活动,但当我点击页面未找到显示。 我的舱单代码是:- 现在我不明白该怎么办
在我阅读的过程中,iOS 9引入了通用链接。在苹果应用程序搜索编程指南的“支持通用链接”一节中,它说这与URL方案的深度链接并不完全相同,但我对这个话题并不完全清楚: 通用链接和URL方案之间的区别是什么?是不是通用链接只适用于网站中的超链接,以及邮件或消息应用程序? 通用链接取代URL方案吗? 通用链接是一种深层链接吗?
我有一个网站可以让用户进行搜索查询。查询可能需要一些时间来完成(几分钟到几天),我想让用户下载一个Android应用程序,并通过向用户发送一封带有链接的电子邮件来收到答案。 我希望无论用户是否安装了应用程序,这种机制都能起作用;换句话说: 如果用户拥有该应用程序,则应该使用包含标识符参数的深层链接打开该应用程序。 如果用户没有它,它应该在应用程序的页面上打开播放商店(例如