2015-05-15 5 views
1

У нас мало разработчиков, работающих на локальном сервере Apache..htaccess получить базовую часть uri

Мы установили некоторые основные правила относительно структуры нашей локальной среды разработки, так как мы хотим иметь один файл .htaccess, который будет работать для всех.

Структура довольно проста:

локальный/~ имя пользователя/апи/api_request_request

Я пытаюсь создать RewriteRole, который будет хранить в пользовательской переменной/~ имя пользователя/часть, так как она меняется от одного разработчика к другому.

Это то, что я получил до сих пор:

#Set the base in case of local development 
    RewriteCond %{HTTP_HOST} ^(.*)localhost(.*)$ 
    #Here only the /~username should be captured 
    RewriteRule ^(.*)$ $1 [E=LOCAL_BASE:$1] 

    #Set the base in case of local development 
    RewriteCond %{HTTP_HOST} !^(.*)localhost(.*)$ 
    RewriteRule ^(.*)$ $1 [E=LOCAL_BASE:production.server.com] 

    RewriteRule ^(.*)$ %{HTTP_HOST}/%LOCAL_BASE/api/index.php?request=$1 [QSA,NC] 

Проблема заключается в том, что в первом RewriteCond я не знаю, как захват только ~ имя пользователя часть

ответ

1

Вы можете сделать это с менее сложная логика

# LOCAL environment 
RewriteCond %{HTTP_HOST} localhost [NC] 
RewriteRule ^([^/]+)/(.*)$ /$1/api/index.php?request=$2 [L] 

# REMOTE environment 
RewriteCond %{HTTP_HOST} !localhost [NC] 
RewriteRule ^(.*)$ /production.server.com/api/index.php?request=$1 [L] 
+0

Можете ли вы потратить больше $ 1 и $ 2? Кроме того, разница между производственным сервером и нашим локальным хостингом разработки заключается в том, что в разработке он выглядит как localhost/~ username/api/apirequest, а production - production.server.com/apirequest. Я хотел создать базовую переменную, которая будет включать базу до/apirequest и будет включать HTTP_HOST (только потому, что я хочу, чтобы она была более общей), и я задаюсь вопросом, могу ли я сделать ваш пример более общим –

+0

В первом правиле '$ 1 ' ~ username' и '$ 2', что после. Например, когда вы находитесь на локальном компьютере, если вы перейдете к 'http: // localhost/~ test/something/random/here', вы получите' $ 1' как '~ test' и' $ 2' как '/ something/random/here', который будет внутренне переписываться в '/~test/api/index.php? request = something/random/here'. На самом деле вы можете определить базу более общим образом, но это сложно для ничего. Если вы действительно этого хотите, я могу дать вам пример в любом случае –

+0

lurman благодарит за детали. Я первый правило, как вы определяете, или где вы задаете, какая часть будет идти к каждой из переменных? Я думаю, что мне не хватает –

Смежные вопросы