让web.config正常工作的问题

时间:2013-06-28 23:50:36

标签: html iis web

我在使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>

我不知道如何使它只重定向不作为系统文件存在的文件/网址。有什么想法吗?

编辑我固定它

需要为文件添加条件以检查它是否是文件

<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

0 个答案:

没有答案