2017-08-02 37 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中捕獲網絡跟蹤,並確認您得到的響應是什麼。

希望這有助於!

相關問題