如何将域的所有请求路由到子文件夹asp.net
我已经看到了很多解决方案,但似乎没有一个奏效 我有一个域名如何将域的所有请求路由到子文件夹asp.net,asp.net,asp.net-mvc-4,Asp.net,Asp.net Mvc 4,我已经看到了很多解决方案,但似乎没有一个奏效 我有一个域名 producerpte.co.uk 但是我在一个子文件夹中设置了一个单独的应用程序,所以要查看该应用程序的根,您必须转到 producerpte.co.uk/producerpte 但是,我需要它,这样用户就不会看到url的“site1”部分 当我在Web.Serverconfig中使用url重写,或者在code中使用Context.RewritePath时(在根目录上设置的应用程序中),它只会将用户重定向到url(其中包含site
producerpte.co.uk
但是我在一个子文件夹中设置了一个单独的应用程序,所以要查看该应用程序的根,您必须转到
producerpte.co.uk/producerpte
但是,我需要它,这样用户就不会看到url的“site1”部分
当我在Web.Server
config中使用url重写,或者在code中使用Context.RewritePath
时(在根目录上设置的应用程序中),它只会将用户重定向到url(其中包含site1),我不想让用户知道他们要转到子文件夹
我是不是搞错了
我实际上在使用Winhost。我尝试过的所有示例都只是在不重定向url的情况下不更改调用结果:-(
winhost告诉我应该使用代码/配置。老实说,我更喜欢使用代码
更新:我尝试了Max的答案,我做到了
<rules>
<rule name="Redirect if producerpte" stopProcessing="true">
<match url="^ producerpte/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder">
<match url="^.*$" />
<action type="Rewrite" url="producerpte/{R:0}" />
</rule>
</rules>
但是运气不好:-(浏览器中的URL仍然会更改…如果WinHost确实启用了IIS重写模块,请编辑您的
web.config
文件并尝试此规则:
<rewrite>
<rules>
<rule name="Redirect if site1" stopProcessing="true">
<match url="^site1/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder">
<match url="^.*$" />
<action type="Rewrite" url="site1/{R:0}" />
</rule>
</rules>
</rewrite>
显示http://localhost:8066/
C:\inetpub\wwwroot\producerpt\producerpt的内容,而不更改浏览器中的URL
显示http://localhost:8066/producerpte/
但浏览器中的URL更改为C:\inetpub\wwwroot\producerpt\producerpt的内容
http://localhost:8066/
请确保您在root站点(而不是子应用程序)上创建了规则,我注意到您的配置中有一个前导空格:
介于^
和producerpt
之间。如果WinHost确实启用了IIS重写模块,请编辑web.config
文件并尝试使用此规则:
<rewrite>
<rules>
<rule name="Redirect if site1" stopProcessing="true">
<match url="^site1/(.*)$" />
<action type="Redirect" url="{R:1}" />
</rule>
<rule name="Rewrite to sub folder">
<match url="^.*$" />
<action type="Rewrite" url="site1/{R:0}" />
</rule>
</rules>
</rewrite>
显示http://localhost:8066/
C:\inetpub\wwwroot\producerpt\producerpt的内容,而不更改浏览器中的URL
显示http://localhost:8066/producerpte/
但浏览器中的URL更改为C:\inetpub\wwwroot\producerpt\producerpt的内容
http://localhost:8066/
确保您在根站点(而不是子应用程序)上创建了规则我注意到您的配置中有一个前导空格:
介于^
和producerpt
winhost是否运行IIS 7或更高版本?他们是否安装了IIS重写模块?IIS 8,但他们说我需要使用代码!winhost是否运行IIS 7或更高版本?他们是否安装了IIS重写模块?IIS 8,但他们说我需要使用代码!嗨,Max,实际上完整的根目录是…producerpt.co.uk/producerpt/-这是开箱即用的,但是当我输入配置时…我得到一个404,它试图转到producerpt/producerpt(URL也在更改-我真的不想要这个:-()好的,我玩了一点,现在只是重定向,但我希望它返回内容,但不更改url,这是可能的吗?嗨,Max,是的,这基本上是正确的答案,所以我标记了它。但是现在我正在努力解决如何创建多个文件夹,你能相信吗?你不能相信这有多困难……我正在尝试修改你的second rule选择域名producerpt.co.uk只是为了让我能以类似的方式做我的女朋友网站samyoga…你不知道怎么做吗?对不起,如果不谢谢你,你已经帮了我很多忙了…但是我已经试了好几天了!谢谢peteHi Max,实际上完整的根是…producerpt.co.uk/producerpt/-这很有效然而,当我打开配置时…我得到一个404,它试图转到producerpt/producerpt(URL也在变化-我真的不想要这个:-()好的,我玩了一点,现在只是重定向,但我希望它返回内容,但不更改url,这是可能的吗?嗨,Max,是的,这基本上是正确的答案,所以我标记了它。但是现在我正在努力解决如何创建多个文件夹,你能相信吗?你不能相信这有多困难……我正在尝试修改你的se第二条规则:我只能选择域名producerpt.co.uk,这样我才能以类似的方式创建我的女朋友网站samyoga…你不知道怎么做吗?很抱歉,如果不感谢你,你已经帮了我很多忙了…但我已经为此努力了好几天了!谢谢pete