1

我目前有这个 CakePHP 设置:CakePHP中的变量前缀路由

用于处理通配符子域的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]
4

1 回答 1

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

于 2012-08-16T00:52:28.920 回答