所以我的系统上有一个API,在域名“system.com”上运行,api在“api.system.com”上运行,但是托管在同一台服务器上。
我的.htaccess的目的是将所有包含“api.system.com”的调用重定向到我的api文件夹,将所有其他调用重定向到我的主站点。
如果没有请求特定的api(REQUEST URI为空),它应该重定向到api / apidocs.php以显示apidocs。
问题是,即使我转到有效的网址,它也会将我重定向到api / apidocs.php。
Htaccess代码:
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如何不一样?