1

我在让我的 webconfig 正常工作时遇到了一些问题。它正在重定向所有文件,它应该只重定向系统上不作为文件存在的文件/url。我正在运行 IIS Web 服务器。我从下面的 .htaccess 文件开始。

<IfModule mod_rewrite.c>
RewriteLog "mywebsite.rewrite.log"
RewriteLogLevel 9
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]
</IfModule>

这是我的 web.config 文件。

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="rule 1q" stopProcessing="true">
    <match url="^(.*)$" />
    <action type="Rewrite" url="/index.php?url={R:1}" appendQueryString="true"     />
    </rule>
         </rules>
    </rewrite>
    <staticContent>
        <mimeMap fileExtension="js" mimeType="application/javascript" />
        <mimeMap fileExtension="css" mimeType="text/css" />
    </staticContent>
</system.webServer>
</configuration>

我不知道如何让它只重定向系统上不作为文件存在的文件/url。有任何想法吗?

编辑我修复它

需要给文件添加条件来检查它是否是一个文件

<conditions> 
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions>

整个 web.config 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
    <rewrite>
        <rules>
            <rule name="rule 1q" stopProcessing="true">
    <match url="^(.*)$" />
    <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
    </conditions>
    <action type="Rewrite" url="/index.php?url={R:1}" appendQueryString="true"    />
    </rule>
         </rules>
    </rewrite>
    <staticContent>
        <mimeMap fileExtension="js" mimeType="application/javascript" />
        <mimeMap fileExtension="css" mimeType="text/css" />
    </staticContent>
</system.webServer>
</configuration>

并参考此站点以获取更多信息: http ://www.iis.net/learn/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#Rule_pattern_syntax

4

0 回答 0