当前位置: 首页 > 面试题库 >

htaccess重定向到Angular路由

百里鸿祯
2023-03-14
问题内容

我有一些路线的角度应用程序,例如:

site.com/
site.com/page
site.com/page/4

使用angular的html5路由模式,当您从应用程序内单击指向链接的链接时,这些链接可以正确解决,但是当您进行硬刷新时,这些链接当然会出现404错误。为了解决这个问题,我尝试实现基本的htaccess重写。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_METHOD} !OPTIONS
RewriteRule ^(.*)$ index.html [L]

这适用于角度请求,但是当我尝试在我的域内加载脚本或进行ajax调用时,例如:

<script src="/app/programs/script.js"></script>

该脚本不会加载-它的请求被重定向,并且它尝试加载index.html页,因为.htaccess认为它应该重新路由该请求-
不知道此文件确实存在,并且应该加载该文件而不是重定向。

只有在没有实际文件可以解析的情况下,htaccess才可以将htaccess将请求重定向到index.html(使用视图参数)吗?


问题答案:

使用如下代码段:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*) /index.html [NC,L]

如果有一个,这将跳至实际资源,index.html对于所有AngularJS路由,这将跳至实际资源。



 类似资料:
  • 我有以下htaccess代码: 我希望我的站点被重定向到使用HTTPS,并强制执行子域,但当我访问(没有HTTPS),它不会将我重定向到使用HTTPS。

  • 我已经找了好几个小时了,我不知道该怎么做。我需要进行以下301永久重定向: 当人们来访时http://web.domain.com.br/something/ 它们应该被重定向到http://domain.com.br/something/ 哪里(重要!),/something/不是真正的目录,它是wordpress multisite安装中的一个子博客。根上还有其他规则。htaccess文件已在

  • 问题内容: 我已经用Angular编写了Web应用程序的一部分。为了确保覆盖所有路由,我想在中添加一个属性,以便将无效路由返回到不使用Angular的Web应用程序的根目录。 我试过了: 但是很明显,这仅在URL的Angular控制部分中进行路由,因此用户将被重定向到URL ,而不是,我希望他们进入该URL 。 我已经解决了这一问题,方法是使用空白部分作为“404”页面,然后使用该对象将控制器重定

  • 问题内容: 我正在尝试永久运行在服务器上的nodejs中编写的小应用程序。当我这样启动我的应用程序时: 在我的文件夹中,该应用程序正在侦听端口61000 我的.htaccess文件的内容应该是什么? 当前内容(无效): 问题答案: 您应该使用Apache mod_proxy而不是mod_rewrite在Apache中运行Node.js应用程序: 如果您无法为Node应用添加虚拟主机,则可以尝试使用

  • 请不要向我推荐超过173票的长而详细的帖子。这对我不起作用。我也试过很多其他的(1,2,3,4)。他们都给我太多的重定向或错误500。因此,我的问题是: 用我的电流。htaccess,这就是发生的情况: https://www.dukescasino.com/-工作完美 https://dukescasino.com/-重定向到上面的内容,这很好 下面的两个选项加载罚款,但它应该重定向到https

  • 问题内容: 重新设计网站后,我需要重定向几个页面。一切都在同一个域中,只有几件事已被重组和/或重命名。它们的形式为: /contact.php 就是现在: /contact-us.php 使用.htaccess文件,我添加了这一行,这是我最推荐的行: 这通常很好-它可以完成工作-问题是,它还可以重定向: /team1/contact.php /non-existant-folder/contact