Slim Framework仅适用于本地服务器

时间:2017-08-02 03:04:07

标签: php rest iis slim

我有一个我已经构建并在IIS服务器上运行的API。我的web.config文件如下:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="slim" patternSyntax="Wildcard">
                    <match url=".*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

值得注意的是,我的结构如下:

wwwroot/
-web.config
-api/
--vendor
--src/
---index.php

我可以访问API并在我的本地服务器上进行调用,我的整个API都按预期运行......问题是我无法从网络上的其他计算机访问。错误消息是无法访问/拒绝连接站点。我已经尝试将web.config文件复制到每个目录,以确保它不是文件所在位置的问题。我还创建了一个虚拟的“hello world”php脚本并将其放在服务器上以确保远程机器具有访问权限,这样就可以了。 (使用http://myservername/helloworld.php访问)似乎我可以远程访问我放在Web服务器上的任何内容,除了我的瘦API路径。是否需要在SLIM或IIS中设置一些配置才能使其正常工作?

1 个答案:

答案 0 :(得分:0)

错误消息是无法访问/拒绝连接网站

  

你的规则似乎很好。如果你的规则是错误的,理想情况下应该得到404   错误而不是&#34;网站无法联系/拒绝连接&#34; 。这个错误   表示请求无法仅访问服务器。

您的应用程序中可能有重定向(例如https),或者您使用错误的主机名从其他计算机访问该网站。请检查以下

  • 验证IIS中的绑定,以确保您在所有未分配的IP地址或服务器的IpAddress上列出内容。例如第一次绑定

    <bindings> <binding protocol="http" bindingInformation="*:80:" /> <binding protocol="https" bindingInformation="*:443:" />
    <binding protocol="http" bindingInformation="*:80:hostname" /> </bindings>

  • 如果您在IPAddress中有*或空白主机名,则可以使用http://servernamehttp://ipaddress从其他计算机访问该网站。

  • 如果您有主机名,则只能使用主机名访问该站点,该主机名可能在不同的机器上运行,也可能不运行。
  • 如果绑定正常,现在从IE开发人员工具栏或chrome中捕获网络跟踪,并验证您的确切响应。

希望这有帮助!