0

我已经看到了很多解决方案,但似乎没有一个有效....

我有一个域

producerpte.co.uk

但是我在子文件夹中设置了一个单独的应用程序,因此要查看该应用程序的根目录,您必须转到...

producerpte.co.uk/producerpte

但是我希望它让用户看不到 url 的“site1”部分。

Web.Server当我在配置中使用 url 重写或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>

但没有运气:-(而且浏览器中的网址仍然会改变......

4

1 回答 1

3

如果 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>

- - 更新 - -

好吧,我测试了这个 IIS 配置:

在此处输入图像描述

我在站点上添加了规则。
IIS 创建了一个web.config文件:

在此处输入图像描述

这是 web.config 文件的内容:

<configuration>
    <system.webServer>
        <rewrite>
             <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>
        </rewrite>
    </system.webServer>
</configuration>
  • http://localhost:8066/显示内容C:\inetpub\wwwroot\producerpte\producerpte而不更改浏览器中的 URL

  • http://localhost:8066/producerpte/显示内容,C:\inetpub\wwwroot\producerpte\producerpte但浏览器中的 URL 更改为http://localhost:8066/

确保您在站点(而不是子应用程序)上创建了规则,我注意到您的配置中有一个前导空格:<match url="^ producerpte/(.*)$" />between ^and producerpte

于 2013-06-12T20:38:26.363 回答