Angular 8 应用程序:window.open 在新的 window 中总是重定向到 index.html
Angular 8 app: window.open in new window always redirects to index.html
我已经为我的应用程序设置了一个标签,该标签附加了一个指令,该指令将调用 window.open 希望我的应用程序在我的路线路径中的新 window 中打开
window.open(
'/my-path',
'_blank',
'height=550,width=1400'
);
这一切在 localhost 中都工作得很好,但出于某种原因,当我进入 dev 时,新的 window 总是想重定向到 index.html 并且只是将我跳转到根目录,而不是比去 /my-path.
知道我可能遗漏了什么吗?
我猜想(因为问题可能有多种原因...)您的服务器试图处理对子路由的请求,但这应该由 Angular.[=18 在客户端完成=]
您必须将服务器配置为对所有请求回退到 index.html
。
示例阿帕奇:
RewriteEngine On
# 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 ^ /index.html
Nginx 示例:
try_files $uri $uri/ /index.html;
Angular documentation 中有更多详细信息。
AWS 更新:
AWS Amplify 默认重定向到 index.html
时会发生 404 错误,但这是一个简单的重定向。来自 docs:
Most SPA frameworks support HTML5 history.pushState() to change browser location without triggering a server request. This works for users who begin their journey from the root (or /index.html), but fails for users who navigate directly to any other page. Using regular expressions, the following example sets up a 200 rewrite for all files to index.html except for the specific file extensions specified in the regular expression.
以下设置适用于 AWS Amplify:
// Original address
</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>
// destination
/index.html
// Redirect Type
200
我已经为我的应用程序设置了一个标签,该标签附加了一个指令,该指令将调用 window.open 希望我的应用程序在我的路线路径中的新 window 中打开
window.open(
'/my-path',
'_blank',
'height=550,width=1400'
);
这一切在 localhost 中都工作得很好,但出于某种原因,当我进入 dev 时,新的 window 总是想重定向到 index.html 并且只是将我跳转到根目录,而不是比去 /my-path.
知道我可能遗漏了什么吗?
我猜想(因为问题可能有多种原因...)您的服务器试图处理对子路由的请求,但这应该由 Angular.[=18 在客户端完成=]
您必须将服务器配置为对所有请求回退到 index.html
。
示例阿帕奇:
RewriteEngine On
# 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 ^ /index.html
Nginx 示例:
try_files $uri $uri/ /index.html;
Angular documentation 中有更多详细信息。
AWS 更新:
AWS Amplify 默认重定向到 index.html
时会发生 404 错误,但这是一个简单的重定向。来自 docs:
Most SPA frameworks support HTML5 history.pushState() to change browser location without triggering a server request. This works for users who begin their journey from the root (or /index.html), but fails for users who navigate directly to any other page. Using regular expressions, the following example sets up a 200 rewrite for all files to index.html except for the specific file extensions specified in the regular expression.
以下设置适用于 AWS Amplify:
// Original address
</^[^.]+$|\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|ttf|map|json)$)([^.]+$)/>
// destination
/index.html
// Redirect Type
200