したがって、ドメイン「system.com」で実行されているシステムにAPIがあり、APIは「api.system.com」で実行されますが、同じサーバーでホストされています。
私の .htaccess の目的は、「api.system.com」を含むすべての呼び出しを api フォルダーにリダイレクトし、他のすべての呼び出しをメイン サイトにリダイレクトすることです。
特定の api が要求されていない場合 (REQUEST URI が空である場合)、api/apidocs.php にリダイレクトして apidoc を表示する必要があります。
問題は、有効な 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 が同じにならないのはなぜですか?