Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IIS 10/Apache问题-web.config_Apache_Iis - Fatal编程技术网

IIS 10/Apache问题-web.config

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

我在使用可以在各种语言中看到的目录/变量规则时遇到问题。 例如:

应以example.com的形式读取,并使用foo和bar作为变量

然而,在IIS中,无论我做了多少重写,它似乎都没有意识到这一点。下面是apache.htaccess文件,它可以工作:

<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”的索引页中:

大概是这样的:


谢谢!我来看看!谢谢我来看看!