Use domain as “prefix” on CakePHP

不羁岁月 提交于 2020-01-23 02:46:06

问题


Let's say that I have a site running CakePHP and I have the prefix "product".

I have lots of pages with URL like:

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

Now I need to use a domain like http://mysite-blue-shirt.com/ as "shortcut" to the blue-shirt product, and my URLs will become:

http://mysite-blue-shirt.com/details
http://mysite-blue-shirt.com/order

What I need to do?

I think that's something with the .htaccess on the root of the website, outside the app directory.

Here's the current syntax:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

回答1:


Try this:

<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>

The first line checks the site's name. The second one checks if it has already not been re-written to blue-shirt. The final line carries out the rewrite.




回答2:


I think you'll need to create your own custom Routing class. Check this: http://mark-story.com/posts/view/using-custom-route-classes-in-cakephp




回答3:


For the outside world to see this you would need to register mysite-blue-shirt and all the other variants.



来源:https://stackoverflow.com/questions/4031966/use-domain-as-prefix-on-cakephp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!