IIS 反向代理到 apache 忽略 .htaccess

IIS 反向代理到 apache 忽略 .htaccess

我有一个使用 slim 框架构建的小型 php。我已在 上运行的 apache 上进行了设置localhost:8055。使用/users/getlocalhost:8055能够获得 api 结果,而无需使用index.php/users/get

现在,我还在端口 80 上运行 IIS,它通过互联网监听外部请求。我在 iis 上设置了一个站点,并将反向代理重写规则设置为 localhost:8085。我能够通过 IIS 反向代理到 localhost:8055 在互联网上获取结果,mydomain.com/index.php/users/get但不能使用mydomain.com/users/get。我认为当请求从 iis 转到 apache 时它不会选择 .htaccess。

这是我的 htaccess 文件:

RewriteEngine On
RewriteBase /office/gcm_chat/v1/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

答案1

我猜你的 php 脚本正在解析 PATH_INFO,它将/users/get在你请求时设置为mydomain.com/index.php/users/get,但不会在你请求时设置mydomain.com/users/get。而是解析请求 URI。

还值得考虑将 htaccess 文件中的所有行更改为简单行FallBackResource index.php,并将其移动到<Directory>块中的主配置文件中。这两项更改都可以独立完成。

就像是:

<Directory "c:/Path/To/office/gcm_chat/v1/">
  FallBackResource index.php
</Directory>

相关内容