.htaccess获得uri的基础部分

时间:2015-05-15 16:20:15

标签: apache .htaccess mod-rewrite

我们很少有开发人员在本地Apache服务器上工作。

我们设置了一些关于本地开发环境结构的基本规则,因为我们想要一个适用于所有人的.htaccess文件。

结构非常简单:

本地主机/〜用户名/ API / api_request_request

我试图创建一个RewriteRole,它将自定义变量存储在/ ~username / part中,因为它因开发人员而异。

这是我到目前为止所得到的:

   #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 个答案:

答案 0 :(得分: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]