web.config将所有请求路由到index.php,但物理文件和目录除外

时间:2018-05-01 20:59:42

标签: laravel .htaccess iis web-config

我试图将php脚本上传到Windows iis服务器 在PHP脚本中我们有一个htacess文件,它将所有请求路由到index.php,所以我们可以有

site.com/something

而不是

site.com/index.php?/something

但它在Windows服务器上不起作用所以我试图找到web.config版本这里是我发现的

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <!-- Quitar los slash '/' del final de la ruta -->
        <rule name="RewriteRequestsToPublic">
          <match url="^(.*)$" />
          <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
          </conditions>
          <action type="Rewrite" url="/{R:0}" />
        </rule>

        <!-- Si el archivo o carpeta solicitado no existe, se realiza la petición a través de index.php -->
        <rule name="Imported Rule 1" stopProcessing="true">
          <match url="^(.*)$" ignoreCase="false" />
          <conditions logicalGrouping="MatchAll">
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          </conditions>
          <action type="Rewrite" url="/index.php/{R:1}" appendQueryString="true" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

它有点工作,但它不加载静态文件(css,js)就像我去

site.com/public/js/jquery.js

我收到此错误

HTTP Error 500.52 - URL Rewrite Module Error.
The page cannot be displayed because an internal server error has occurred.
Detailed Error Information
Module  RewriteModule
Notification    SendResponse
Handler StaticFile
Error Code  0x800700b7
Config Error    Cannot add duplicate collection entry of type 'rule' with unique key attribute 'name' set to 'Imported Rule 1'
Config File \\?\C:\HostingSpaces\phoenarts\site.com\wwwroot\public\web.config

基本上它工作我需要告诉它忽略目录和静态文件文件的链接

1 个答案:

答案 0 :(得分:1)

该错误意味着您已经在某处声明了名称为Imported Rule 1的规则。尝试更改错误中指示的文件中的规则名称。

如果〜/ public中有web.config文件,而web根目录中有另一个文件,则会将两个文件合并为对静态资产的请求。这听起来像是在发生什么?

你可以使用多个web.configs来配置这样的不同路径,但你不应该在它们之间复制规则。

您还可以使用根web.config中的<location>元素来配置不同的路径(作为使用多个web.config文件的替代方法)。