2017-08-02 135 views
0

我有一个我已经构建并在IIS服务器上运行的API。我的web.config文件如下:Slim Framework只能在本地服务器上工作

<?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中设置一些配置才能使其工作?

回答

0

该错误消息是该网站不能达到/拒绝连接

您的规则似乎罚款。如果你的规则是错误的,你应该得到404 错误,而不是“站点无法到达/拒绝连接”。此错误 表示请求无法到达服务器。

您可能在应用程序中有重定向(例如https),或者您使用不正确的主机名从其他机器访问网站。请检查下面

  • 验证在IIS中的结合,以确保你在所有未分配的IP地址或服务器的Ip地址listneing。例如首先结合

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

  • 如果你在ip地址或空白主机名*,您可以访问使用http://servernamehttp://ipaddress从其他机器的网站。

  • 如果您有给定的主机名,则只能使用主机名来访问该主机名,而该主机名可能会或可能不会在不同的机器上工作。
  • 如果绑定正常,现在从IE开发人员工具栏或chrome中捕获网络跟踪,并确认您得到的响应是什么。

希望这有助于!

相关问题