我使用WAMP堆栈(Windows + Apache + MySQL + PHP)和SlimPHP微框架开发了后端应用程序。它与WAMP完美配合,但现在我必须在使用IIS v7.5的服务器上工作,并且我收到HTTP 404错误。
前端是位于根目录中的AngularJS应用程序(此处没有问题),它使用从位于/ api / v0子目录中的SlimPHP API获取的数据。
以下是我的网络应用程序的结构:
Project
|--index.html
|--styles (directory with .css files)
|--views (directory with .html partial views for angularJS)
|--scripts (directory with .js angularJS scripts)
|--api
|--composer.json
|--vendor
|--autoload.php
|--slim (directory with slim framework files)
|--v0
|--index.php (SlimPHP application)
|--.htaccess (Apache configuration file)
|--web.config (ISS configuration file)
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ %{ENV:BASE}index.php [QSA,L]
RewriteCond %{HTTP:Authorization} .+
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="slim" stopProcessing="true">
<match url="^api/v0/(.*)$" ignoreCase="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="api/v0/index.php/{R:0}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
<httpErrors existingResponse="PassThrough" />
</system.webServer>
</configuration>
我修改了SlimPHP http://www.slimframework.com/docs/start/web-servers.html中提出的原始 .htaccess ,但我不知道如何更改 web.config 。
这是我第一次使用和IIS服务器,我花了很多时间研究并试图让它工作没有成功。
答案 0 :(得分:2)
web.config
中的此配置文件Project/api/v0/
对我有用:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="slim" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
</conditions>
<action type="Rewrite" url="index.php/{R:1}" appendQueryString="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>