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