2016-03-18 2 views
0

Я использую .htaccess для перенаправления всех вызовов на http://domain/site1/api/ на index.php в/site1/api/folder. Этот index.php является точкой входа для отдыха api.Использование Rewritebase в .htaccess

# /site1/api/.htaccess 
RewriteEngine On 
RewriteBase /site1/api/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

Он отлично работает, но есть ли лучший способ, чем использовать жестко закодированную RewriteBase? Я хотел бы, чтобы это два URL-адреса работы: http://site1.domain/api/ и http://domain/site1/api/.

ответ

3

Вы можете создать динамическое основание, используя переменные среды. Так что в самом верху HTAccess, может быть что-то вроде этого:

RewriteCond %{ENV:BASE} ^$ 
RewriteCond $1::%{REQUEST_URI} ^(.*)::(.*?)\1$ 
RewriteRule ^(.*)$ - [ENV=BASE:%2] 

Таким образом, «ОСНОВА» переменная становится /site1/api/. И вы тогда будете использовать его следующим образом:

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^%{ENV:BASE}/index.php [QSA,L] 
Смежные вопросы