2012-08-16 79 views
1

我现在有这个CakePHP的设置:Variable Prefixed Routing in CakePHP通配符子域名使用CakePHP的htaccess

DNS为*.example.com和Apache项处理通配符子域名已经存在。不幸的是,我似乎无法将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] 

回答

0

你的意思是这样? (会去你上面有上面的应用程序/ webroot的规则):

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

这应该得到首次应用,则应用程序/ webroot的规则应该生效,并将其指向:/app/webroot/%1/controller/$1

+0

对不起,我想我没有正确写下我的问题 - 我希望X.example.com后的所有内容都转到example.com/X/(其他地方)。 – 2012-08-16 01:10:10