IIS 10/Apache问题-web.config
我在使用可以在各种语言中看到的目录/变量规则时遇到问题。 例如: 应以example.com的形式读取,并使用foo和bar作为变量 然而,在IIS中,无论我做了多少重写,它似乎都没有意识到这一点。下面是apache.htaccess文件,它可以工作:IIS 10/Apache问题-web.config,apache,iis,Apache,Iis,我在使用可以在各种语言中看到的目录/变量规则时遇到问题。 例如: 应以example.com的形式读取,并使用foo和bar作为变量 然而,在IIS中,无论我做了多少重写,它似乎都没有意识到这一点。下面是apache.htaccess文件,它可以工作: <IfModule mod_rewrite.c> Options -Multiviews RewriteEngine Options RewriteBase /richie/public Rewrit
<IfModule mod_rewrite.c>
Options -Multiviews
RewriteEngine Options
RewriteBase /richie/public
RewriteCond %{REQUEST_FILENAME} "-d
RewriteCond %{REQUEST_FILENAME} "-f
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
</IfModule>
选项-多视图
重写引擎选项
RewriteBase/richie/public
重写cond%{REQUEST_FILENAME}“-d
重写cond%{REQUEST_FILENAME}“-f
重写规则^(+)$index.php?url=$1[QSA,L]
公用文件夹中转换/对应的IIS web.config文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Rule1" stopProcessing="true">
<match url="^(.*)$" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
然而IIS似乎忽略了它。。。我只得到404,因为目录不存在(它不存在,因此需要重写)
有什么想法吗?当您在重写的URL中指定唯一的文件名,而不指定路径和主机名时,它将尝试在应用规则的特定目录中查找URL。在您的情况下,它试图在公用文件夹中查找index.php文件,但该文件不可用,因此您得到的是404错误,而不是索引页。因此,只需尝试将主机名添加到“重写URL”的索引页中: 大概是这样的:
当您在重写的URL中指定唯一的文件名而不指定路径和主机名时,它将尝试在应用规则的特定目录中查找URL。在您的情况下,它试图在公用文件夹中查找index.php文件,但该文件不可用,因此您得到的是404错误,而不是索引页。因此,只需尝试将主机名添加到“重写URL”的索引页中: 大概是这样的:
谢谢!我来看看!谢谢我来看看!