重写适用于所有请求的 Web.config 规则
Rewriting Web.config rule applying to all requests
我花了几个小时试图找到一种方法(我没有真正掌握复杂的 IIS 文档)使 URLS 友好,同时在 public 文件夹中保留一个入口点。我的意思是,当用户键入:
"localchosy/myproject/route1"
内部规则将其重定向到:
"localhost/myproject/public/index.php/route1"
我写的规则是,(我认为)它很有魅力,是:
<system.webServer>
<rewrite>
<rules>
<!-- REWRITING INDEX.PHP -->
<rule name="Default" stopProcessing="true" >
<match url="[/^myproject$/]{1}(.*)" />
<action type="Rewrite" url="myrpoject/public/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
尽管我仍然需要添加 https 强制执行并阻止对文件夹的直接访问,但它确实起作用了(该应用程序仍处于测试阶段)。但是,令我惊讶的是,当我写
localhost/phpmyadmin
服务器重定向重写为
localhost/myproject/public/index.php/phpmyadmin
很明显我对这些规则有些不理解。我认为“匹配”标签意味着只有在存在正则表达式匹配时才应用规则,但显然不是这样......事实上,我使用的前缀带有 url 属性匹配标签什么都不做...我不明白。
如何使规则仅适用于以“myproject”开头的 URL...
PS:目前我在 inetub/wwwroot 中有 web.config 文件,与项目处于同一级别。
谢谢。
我测试了你的规则并做了一些修改。请试试这个。
<rule name="Default" stopProcessing="true">
<match url="myproject/(.*)" />
<action type="Rewrite" url="myrpoject/public/index.php/{R:1}" />
<conditions>
<add input="{REQUEST_URI}" pattern="myproject/public/(.*)" negate="true" />
</conditions>
</rule>
这是失败请求跟踪的日志。
我花了几个小时试图找到一种方法(我没有真正掌握复杂的 IIS 文档)使 URLS 友好,同时在 public 文件夹中保留一个入口点。我的意思是,当用户键入:
"localchosy/myproject/route1"
内部规则将其重定向到:
"localhost/myproject/public/index.php/route1"
我写的规则是,(我认为)它很有魅力,是:
<system.webServer>
<rewrite>
<rules>
<!-- REWRITING INDEX.PHP -->
<rule name="Default" stopProcessing="true" >
<match url="[/^myproject$/]{1}(.*)" />
<action type="Rewrite" url="myrpoject/public/index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
尽管我仍然需要添加 https 强制执行并阻止对文件夹的直接访问,但它确实起作用了(该应用程序仍处于测试阶段)。但是,令我惊讶的是,当我写
localhost/phpmyadmin
服务器重定向重写为
localhost/myproject/public/index.php/phpmyadmin
很明显我对这些规则有些不理解。我认为“匹配”标签意味着只有在存在正则表达式匹配时才应用规则,但显然不是这样......事实上,我使用的前缀带有 url 属性匹配标签什么都不做...我不明白。
如何使规则仅适用于以“myproject”开头的 URL...
PS:目前我在 inetub/wwwroot 中有 web.config 文件,与项目处于同一级别。
谢谢。
我测试了你的规则并做了一些修改。请试试这个。
<rule name="Default" stopProcessing="true">
<match url="myproject/(.*)" />
<action type="Rewrite" url="myrpoject/public/index.php/{R:1}" />
<conditions>
<add input="{REQUEST_URI}" pattern="myproject/public/(.*)" negate="true" />
</conditions>
</rule>
这是失败请求跟踪的日志。