gpt4 book ai didi

php - IIS 7 重写规则抛出 HTTP 错误 403.14 - 如果文件夹存在则禁止访问

转载 作者:可可西里 更新时间:2023-11-01 12:20:30 26 4
gpt4 key购买 nike

我有一个由 php 路由的网站。

我已经把它放在 web.config 文件中:

<rewrite>
<rules>

<!-- Quitar los slash '/' del final de la ruta -->
<rule name="RewriteRequestsToPublic">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Rewrite" url="/{R:0}" />
</rule>

<!-- la ruta /cursos/ directamente la redirigimos para que no dé error 403.14 al intentar 'explorar' el directorio -->
<rule name="cursos redirect" stopProcessing="true">
<match url="^cursos$" />
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>

<!-- Si el archivo o carpeta solicitado no existe, se realiza la petición a través de index.php -->
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>

它适用于我所有的站点路由,除非路由匹配一个现有目录。

我有这个文件夹结构:

index.php
cursos/img
assets/img

我的网站管理路由没有问题,例如:/paginas/paginas/contactocursos/masinformacion/10 cursos/img/banner.jpg 等...

但如果我尝试转到 /cursos,我会得到:HTTP Error 403.14 - Forbidden

我已将这些行添加到 web.config 文件中:

<!-- la ruta /cursos/ directamente la redirigimos para que no dé error 403.14 al intentar 'explorar' el directorio -->
<rule name="cursos redirect" stopProcessing="true">
<match url="^cursos$" />
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>

现在是:

<rewrite>
<rules>

<!-- Quitar los slash '/' del final de la ruta -->
<rule name="RewriteRequestsToPublic">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false">
</conditions>
<action type="Rewrite" url="/{R:0}" />
</rule>

<!-- la ruta /cursos/ directamente la redirigimos para que no dé error 403.14 al intentar 'explorar' el directorio -->
<rule name="cursos redirect" stopProcessing="true">
<match url="^cursos$" />
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>

<!-- Si el archivo o carpeta solicitado no existe, se realiza la petición a través de index.php -->
<rule name="Imported Rule 1" stopProcessing="true">
<match url="^(.*)$" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>
<action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>

但是还是不行。看起来 IIS 在运行重写规则之前尝试访问 cursos 文件夹

最佳答案

问题是由于尾部的斜线引起的。您可以分两步修复它:

1.将正则表达式修改为 ^cursos(\/?)$

2.首先移动这条规则:

<rule name="cursos redirect" stopProcessing="true">
<match url="^cursos(\/?)$" />
<action type="Rewrite" url="/index.php/{R:0}" appendQueryString="true" />
</rule>

关于php - IIS 7 重写规则抛出 HTTP 错误 403.14 - 如果文件夹存在则禁止访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45394627/

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