我进行了搜索和搜索,无法在任何地方找到此问题。
我们的设置并不理想,这与API有关。
RewriteEngine On
RewriteBase /
RewriteRule ^api$ /system/api.php [L,NC]
RewriteEngine On
RewriteBase /api/2/
RewriteRule ^ index.php [QSA,L]
/
/.htaccess
/api
/2
/index.php <--- My API 2 file
/.htaccess
/system
/api.php
我需要用户能够在/ api或/ api /上访问旧API,直到我们的新API准备就绪。
我需要用户能够在/ api / 2 /上访问新的API。
.htaccess,mod_rewrite忽略/ api $规则上的$(字符串结尾)。那里没有规则可以忽略目录,为什么要这样做?
对/ api的请求?URLParam = Hello - 应该导致请求被路由到/system/api.php
对/ api / 2的请求?URLParam = Hello - 应该导致请求转到/api/2/index.php
请求/ api?URLParam = Hello - 这些返回301重定向到请求/ api /(注意斜杠) - 这通常不是问题,但我们有很多jQuery POST调用/ api(没有斜杠)。重定向后,POST数据将丢失,导致对/ api /
的API调用失败对/ api / 2的请求?URLParam = Hello - 工作正常。
当我删除/ api /目录时,对/ api?Param = Hello的调用完全没有任何问题,没有301重定向。但显然这会停止/ api / 2 /来电。
我无法弄清楚 - 任何帮助都会非常感激。
谢谢,
约什
答案 0 :(得分:2)
使用DirectorySlash Off
关闭尾部斜杠,并在root .htaccess
中添加可选的尾部斜杠:
/ .htaccess文件
DirectorySlash Off
RewriteEngine On
RewriteBase /
RewriteRule ^api/?$ /system/api.php [L,NC]