我有一个使用 slim 框架构建的小型 php。我已在 上运行的 apache 上进行了设置localhost:8055
。使用/users/get
我localhost: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>