【问题标题】:Wildcard Subdomains with CakePHP htaccess带有 CakePHP htaccess 的通配符子域
【发布时间】:2012-08-16 00:40:14
【问题描述】:

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

*.example.com 的 DNS 和用于处理通配符子域的 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]

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 抱歉,我想我的问题写得不对 - 我希望 X.example.com 之后的所有内容都转到 example.com/X/(此处的其他内容)。
    猜你喜欢
    • 2013-02-16
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 2013-09-20
    • 2014-09-06
    相关资源
    最近更新 更多