如何在IIS中编写重写规则来处理以下情况:
文件夹结构:
[AngularApp1]
-- app.js
-- appController.js
-- index.html
[AngularSecondApp]
-- app.js
-- appController.js
-- index.html
[DomainSubApp]
-- app.js
-- appController.js
-- index.html
favicon.ico
gulpfile.js
web.config
AngularApp1
未配置 HTML5 ,并且使用 DEFAULT #!
前缀。因此页面通常看起来像:https://(www.)?mywebsite.com/#!/state...
AngularSecondApp
IS 以 HTML5 模式配置,并使用否 ''
hashPrefix。因此页面通常看起来像:https://(www.)?mywebsite.com/state...
DomainSubApp
未配置 HTML5 ,并且使用 DEFAULT #!
前缀。页面通常看起来像:https://domainsubapp.mywebsite.com/#!/state...
如果满足以下条件,则服务器应使用
AngularSecondApp/index.html
- 子域是
''
或'www'
AND ...- URI?是:
^/\w+/?.*$
-但不是文件
...
如果满足以下条件,则服务器应使用
DomainSubApp/index.html
- 子域为
DomainSubApp
...
否则,服务器应使用
AngularApp1/index.html
,包括:
- 子域是
''
或'www'
AND ...- URI?是:
^/(#!/.*)?$
-但不是文件
我知道您需要考虑文件。例如,http://mywebsite.com/favicon.ico
或http://mywebsite.com/someFile.ext
或http://mywebsite.com/scripts/scriptFile.js
。所以我的一些尝试失败了,因为我的模式太通用了。因此,文件请求也被重写/重定向。
我需要做些什么来确保角度路由持久化吗?因此,如果我转到http://mywebsite.com/route/param1/param2
,应该将其重写/重定向到http://mywebsite.com/AngularSecondApp/index.html
route/param1/param2
到哪里?
之所以说“ Had”,是因为我以前需要URL中名为AngularSecondApp
的子文件夹,例如:https://(www.)?mywebsite.com/AngularSecondApp/state...
。这使事情变得容易。但是黄铜人希望我摆脱URL中的那个子文件夹,因此会造成麻烦。
这就是我所拥有的:
<clear />
/*https forced redirect is here... irrelevant*/
<rule name="AngularSecondApp rewrite" stopProcessing="true">
<match url="^AngularSecondApp/.*$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/AngularSecondApp/index.html" />
</rule>
<rule name="AngularApp1 redirect">
<conditions>
<add input="{REQUEST_URI}" pattern="^(/AngularApp1)?/index\.html$" ignoreCase="true" />
</conditions>
<action type="Redirect" url="/" />
</rule>
<rule name="AngularApp1 rewrite">
<conditions>
<add input="{REQUEST_URI}" pattern="^/$" />
</conditions>
<action type="Rewrite" url="/AngularApp1/index.html" />
</rule>
答案 0 :(得分:0)
作为一天前的人工产物,Rewrites I“ HAD”包括一个Redirect,以防人们直接访问def importcsv(request, company):
for row in dataset['company']:
if(row != company):
raise PermissionDenied("You do not have permission to Enter Clients in Other Company, Be Careful")
页面。另外,我的印象是您对操作采取的任何重写操作(因此将index.html
重写为/
)都必须具有重定向。那是不对的。
因此,在GeorgeAWG发表评论之后,我最终放弃了重定向,只进行了重写。这简化了我的生活,甚至可能简化了每个人的生活。
index.html
因此,如果请求URI以单词字符开头,它将重写为第二个应用程序。
我不确定AngularApp1的工作方式...因为它适用于根 <rule name="AngularSecondApp rewrite">
<conditions>
<add input="{REQUEST_URI}" pattern="^(/\w+)+/?$" />
</conditions>
<action type="Rewrite" url="/AngularSecondApp/index.html" />
</rule>
<rule name="AngularApp1 rewrite">
<conditions>
<add input="{REQUEST_URI}" pattern="^/$" />
</conditions>
<action type="Rewrite" url="/AngularApp1/index.html" />
</rule>
,但它也适用于/
,但它不会抛出{{1}这样的文件}。因此,我的答案解决了问题,但缺少一些理解。