所以我的系统上有一个 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 怎么可能不一样?