使用CakePHP htaccess的通配符子域

时间:2012-08-16 00:40:14

标签: .htaccess cakephp mod-rewrite wildcard-subdomain

我目前有这个CakePHP设置:Variable Prefixed Routing in CakePHP

用于处理通配符子域的*.example.com和Apache条目的DNS已经存在。不幸的是,我似乎无法将CakePHP的默认.htaccess与通配符子域代码合并。

以下是CakePHP默认的.htaccess代码:

RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]

我想做的例子: example.com/controller/action/a - > example.com/global/controller/action/aglobal是字面的)

X.example.com/controller/action/a/b/c - > example.com/X/controller/action/a/b/c 基本上使X成为第一个“目录”,然后维护URL的其余部分。 (X是任何字母数字字符串)

请注意,文件夹X肯定不存在,只需访问后就会将CakePHP重写为app/webroot。我不想修改CakePHP部分的行为,我只需要将上面的URL示例重写为访问该页面的“等效”,然后它将由CakePHP的htaccess条目处理。

供参考,app/webroot/.htaccess

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

1 个答案:

答案 0 :(得分:0)

你是说这样的意思吗? (将超出您上面的app / webroot规则):

RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.example\.com$ [NC]
RewriteRule ^controller/(.*)$ /%1/controller/$1 [L]

这应首先应用,然后app / webroot规则应生效并指向:/app/webroot/%1/controller/$1