2010-10-27 4 views
2

Disons que j'ai un site qui exécute CakePHP et j'ai le préfixe "product".Utilisez domain comme "préfixe" sur CakePHP

J'ai beaucoup de pages avec l'URL comme:

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 

Maintenant, je dois utiliser un domaine comme http://mysite-blue-shirt.com/ comme « raccourci » au produit-shirt bleu, et mes URL deviendront:

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

Qu'est-ce que je dois faire?

Je pense que c'est quelque chose avec le .htaccess à la racine du site, en dehors du répertoire app.

est ici la syntaxe actuelle:

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

Répondre

1

Essayez ceci:

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

La première ligne vérifie le nom du site. Le second vérifie s'il n'a pas déjà été réécrit en blue-shirt. La dernière ligne effectue la réécriture.

+0

Ne devrait pas être 'RewriteRule^(. *) $ App/webroot/index.php? url = produit/blue-shirt/$ 1 [L] '? –

+0

Cela fonctionne aussi. Jetez un oeil au fichier .htaccess dans app/webroot. Il vaudrait mieux réécrire les choses comme le montre ma réponse éditée. Vous pouvez également ajouter l'indicateur QSA à votre règle pour attacher des chaînes de requête. Rappelez-vous de bien tester cela, car les cas de coin peuvent facilement se développer (comme la redirection depuis Cake). – RabidFire

0

Pour le monde extérieur pour voir ce que vous devez vous inscrire monsite-bleu-shirt et toutes les autres variantes.

+1

Je ne parle pas de domaines ... Je me demande ** comment je le fais **, en utilisant htaccess ou hackin dans CakePHP :) –