Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将域的所有请求路由到子文件夹asp.net_Asp.net_Asp.net Mvc 4 - Fatal编程技术网

如何将域的所有请求路由到子文件夹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/
    显示
    C:\inetpub\wwwroot\producerpt\producerpt的内容
    但浏览器中的URL更改为
    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/
    显示
    C:\inetpub\wwwroot\producerpt\producerpt的内容
    但浏览器中的URL更改为
    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