htaccess重写 - 规则被忽略了吗?

时间:2013-07-14 14:12:59

标签: php apache .htaccess mod-rewrite

所以我的系统上有一个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如何不一样?

1 个答案:

答案 0 :(得分:2)

使用此httaccess tester进行调试。也许你可以看到失败的原因。