我在让我的 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