我目前有这个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/a
(global
是字面的)
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 :(得分:0)
RewriteCond %{HTTP_HOST} ^([a-z0-9]+)\.example\.com$ [NC]
RewriteRule ^controller/(.*)$ /%1/controller/$1 [L]
这应首先应用,然后app / webroot规则应生效并指向:/app/webroot/%1/controller/$1
。