在IIS上托管Angular2应用程序后,直接url不起作用
我们开发了Angular2应用程序 当我们在带有“ng serve”的angular cli下运行时,它工作正常 一旦我们将应用程序托管到IIS 7.5,我们就可以浏览到应用程序的根目录,而不会出现太多问题,并且我们可以导航到应用程序导航创建的任何其他视图 但当用户试图加载指向特定路由或组件的url时,问题就开始了 所以如果我们转到。。。它加载index.html,然后单击index.html上的导航链接,用户将进入 但当用户试图通过在浏览器地址栏中键入直接转到url时,它正在将该请求发送到IIS,并返回错误,但未找到资源 而且很容易理解,服务器上不存在url。这是有角度的url。理想情况下,它应该加载index.html,并将url的其余部分传递给angular router,然后加载/route1/component1。这适用于“ng serve”,但不适用于IIS 7.5。我需要在IIS中进行任何设置才能使其正常工作吗?或者在Anuglar2应用程序中我必须做的任何事情在IIS上托管Angular2应用程序后,直接url不起作用,angular,iis-7.5,angular2-routing,angular-cli,Angular,Iis 7.5,Angular2 Routing,Angular Cli,我们开发了Angular2应用程序 当我们在带有“ng serve”的angular cli下运行时,它工作正常 一旦我们将应用程序托管到IIS 7.5,我们就可以浏览到应用程序的根目录,而不会出现太多问题,并且我们可以导航到应用程序导航创建的任何其他视图 但当用户试图加载指向特定路由或组件的url时,问题就开始了 所以如果我们转到。。。它加载index.html,然后单击index.html上的导航链接,用户将进入 但当用户试图通过在浏览器地址栏中键入直接转到url时,它正在将该请求发送到II
有谁能建议我如何修复这个问题吗?我通过执行以下步骤来解决这个问题
使用Angular 4.0和IIS 6.1,对我进行了更简单的更改。这允许我使用命名站点,而不是默认文件夹或上面的重写。我刚刚将基本href从“/”更改为我的应用程序文件夹的名称:
<head>
<base href="MyApp">
...
...
希望这对其他人有用 [windows托管]
创建文本文件并将其命名为“web.config”
打开它,并通过下面的内容,然后确保它是在您的托管根目录
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="./index.html" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
祝你好运:)当我为别人节省时间时,这是值得的 使用
URL Rewrite
模块编写规则,重定向某个URL下的所有内容,以使用该URL的内容。我尝试了许多不同的方法,这是迄今为止我见过的最干净、最好的方法。谢谢你!如果您有一个现有的MVC站点,并且您希望所有Angular2代码都在其下,但您希望=MVCCan任何人都能验证这在IIS8中是否有效,该怎么办?我们可以在IIS7.5中使用,但不能在IIS8中使用。在IIS8中,只要你不尝试使用保存的url,网站就可以正常工作。没关系。我发现这是@angular的问题/router@3.4.9所以我降级到3.4.3来修复它。对我有用,谢谢!但是我已经安装了URL重写模块。当我添加重写规则时,它不起作用。我需要转到“程序和功能”,找到“IIS URL重写模块2”,然后调用此模块的修复。现在它开始工作了!在我的例子中,我必须使用索引,而不是像其他解决方案所建议的那样只使用“/”。