2017-07-29 9 views
10

私は1つのWebサイトをphpでルーティングしています。IIS 7リライトルールでHTTPエラー403.14がスローされます - フォルダが存在する場合に禁止されます

私は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> 

それは、ルート試合1既存のディレクトリの場合を除いて、すべて私のサイトルートの[OK]を動作します。

index.php 
cursos/img 
assets/img 

私のウェブサイトは同じような問題のルートをせずに管理:

私は、このフォルダ構造を持っている /paginas/paginas/contactocursos/masinformacion/10cursos/img/banner.jpg、等...

しかし、私は後藤/cursosしようとすると私取得:HTTPエラー403.14 - 禁止

私はこれらの行を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が

答えて

4

問題は、slash.Youは二つのステップでそれを修正することができ、後続の起こった書き換えルールを実行する前に、cursosフォルダにアクセスしようとしたように見えます:

1.Fixあなたの正規表現^cursos(\/?)$

2に。最初のこのルールを移動:

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

ありがとう!それは完全に動作します –

関連する問題