在.htaccess中使用Rewritebase

时间:2016-03-18 12:57:22

标签: .htaccess

我使用.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/

1 个答案:

答案 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]