gpt4 book ai didi

php - IIS - 提供带或不带尾部斜杠的无扩展名 PHP 文件

转载 作者:行者123 更新时间:2023-12-03 00:13:03 26 4
gpt4 key购买 nike

我不太熟悉 IIS,但我试图隐藏请求中的 .php 扩展名,并且我也希望它在添加尾部斜杠时起作用.

下面的代码可以很好地为没有 .php 扩展名的 PHP 文件提供服务,但它不适用于尾部斜杠 (404)。

<rule name="rewrite php">
<match url="(.*)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).php" />
</conditions>
<action type="Rewrite" url="{R:1}.php" />
</rule>

允许其在有或没有尾部斜杠的情况下工作的正确方法是什么?

最佳答案

我的解决方案如下:

<rule name="Add Trailing Slash" stopProcessing="true">
<match url=".*[^/]$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
<add input="{REQUEST_FILENAME}" pattern=".+?\.\w+$" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Redirect" url="{ToLower:{R:0}}/" />
</rule>

<rule name="rewrite php">
<match url="(.*)(/)" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" negate="true" pattern="(.*).php" />
</conditions>
<action type="Rewrite" url="{R:1}.php" />
</rule>

第一部分强制所有非目录和非直接文件请求使用尾随斜杠。请注意<match url="(.*)(/)" />在第二个 block 中。这将尾部斜杠分隔成单独的正则表达式匹配组。这样,当使用 PHP 扩展名 ( <action type="Rewrite" url="{R:1}.php" /> ) 请求文件时,尾部斜杠将从 URI 中删除。

关于php - IIS - 提供带或不带尾部斜杠的无扩展名 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com