我使用.htaccess将所有对http://domain/site1/api/的调用重定向到/ site1 / api /文件夹中的index.php。这个index.php是rest api的入口点。
# /site1/api/.htaccess
RewriteEngine On
RewriteBase /site1/api/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
它工作正常,但有没有比使用硬编码RewriteBase更好的方法? 我想这两个网址有效:http://site1.domain/api/和http://domain/site1/api/。
答案 0 :(得分:3)
您可以使用环境变量创建动态基础。所以在你的htaccess的最顶端,也许是这样的:
RewriteCond %{ENV:BASE} ^$
RewriteCond $1::%{REQUEST_URI} ^(.*)::(.*?)\1$
RewriteRule ^(.*)$ - [ENV=BASE:%2]
所以" BASE"变量变为/site1/api/
。然后你就这样使用它了:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ %{ENV:BASE}/index.php [QSA,L]