在 CakePHP 上使用域作为“前缀”
Posted
技术标签:
【中文标题】在 CakePHP 上使用域作为“前缀”【英文标题】:Use domain as "prefix" on CakePHP 【发布时间】:2010-10-27 10:01:15 【问题描述】:假设我有一个运行 Cakephp 的站点,并且我有前缀“product”。
我有很多网页的网址如下:
http://mysite.com/produt/blue-shirt/details
http://mysite.com/produt/blue-shirt/order
http://mysite.com/produt/skate/details
http://mysite.com/produt/sun-glasses/vendors
现在我需要使用像http://mysite-blue-shirt.com/
这样的域作为蓝衫产品的“快捷方式”,我的网址将变为:
http://mysite-blue-shirt.com/details
http://mysite-blue-shirt.com/order
我需要做什么?
我认为这与网站根目录上的.htaccess
相关,在app
目录之外。
这是当前的语法:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
【问题讨论】:
【参考方案1】:试试这个:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %HTTP_HOST ^mysite-blue-shirt\.com
RewriteCond %REQUEST_URI !^/product/blue-shirt
RewriteRule ^(.*)$ app/webroot/product/blue-shirt/$1 [L]
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
第一行检查网站的名称。第二个检查它是否还没有被重写为 blue-shirt。最后一行执行重写。
【讨论】:
不应该是RewriteRule ^(.*)$ app/webroot/index.php?url=product/blue-shirt/$1 [L]
?
这也有效。查看 app/webroot 中的 .htaccess 文件。最好按照我编辑的答案显示的方式重写内容。或者,您可以将 QSA 标志添加到您的规则中以附加任何查询字符串。记住要彻底测试,因为极端情况很容易发展(例如从 Cake 内部重定向)。【参考方案2】:
我认为您需要创建自己的自定义路由类。检查这个:http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp
【讨论】:
【参考方案3】:要让外界看到这一点,您需要注册 mysite-blue-shirt 和所有其他变体。
【讨论】:
我不是在谈论域...我在问我是如何做到的,使用 htaccess 或 hackin 进入 CakePHP :)以上是关于在 CakePHP 上使用域作为“前缀”的主要内容,如果未能解决你的问题,请参考以下文章