1

所以我的系统上有一个 API,在域“system.com”上运行,该 api 在“api.system.com”上运行,但托管在同一台服务器上。

我的 .htaccess 的目的是将所有包含“api.system.com”的调用重定向到我的 api 文件夹,并将所有其他调用重定向到我的主站点。

如果没有请求特定的 api(REQUEST URI 为空),它应该重定向到 api/apidocs.php 以显示 apidocs。

问题是,即使我转到一个有效的 url,它也会将我重定向到 api/apidocs.php。

访问代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^api.system.com
RewriteCond %{REQUEST_URI} json
RewriteRule (.+)\.json$ api/$1.php?type=json [QSA,L]

RewriteCond %{HTTP_HOST} ^api.system.com
RewriteCond %{REQUEST_URI} xml
RewriteRule (.+)\.xml$ api/$1.php?type=xml [QSA,L]

RewriteCond %{HTTP_HOST} ^api.system.com
RewriteCond %{REQUEST_URI} /
RewriteRule ^(.+)$ api/apidocs.php [L]

RewriteCond %{HTTP_HOST} ^system.com
RewriteRule ^(.+)$ index.php [QSA,L]

我已经使用http://htaccess.madewithlove.be/对其进行了测试,并且代码可以正常工作。

我尝试在 api/apidocs.php 上输出 $_SERVER 变量,然后我得到了这些(奇怪的)变量:

[SCRIPT_FILENAME] => C:/wamp/www/mysite/api/apidocs.php
[REDIRECT_QUERY_STRING] => type=json
[REDIRECT_URL] => /api/login.php

redirect_url 和 script_filename 怎么可能不一样?

4

1 回答 1

2

使用这个httaccess 测试器进行调试。也许你可以看到什么是失败的。

于 2013-07-14T14:23:23.990 回答