Bonjour à tous,

J'ai lu les commentaires sur les différent tutoriaux cakePHP mais aucune réponses ne me satisfait.

J'ai un site conçu avec le framework cakePHP et j'aimerai avoir un wiki + un forum (Wiki Media et PHPBB), tout les deux dans des dossiers différents.

J'aimerai que les URL soient comme ceci:

WIKI:
www.monsite.com/wiki

Forum:
www.monsite.com/forum

Autres (avec cakePHP):
www.monsite.com/url-de-cakephp
(ex: www.monsite.com/posts/edit/1)

Comment organiser la structure?
Comment configurer le .htaccess?

D'avance merci,
Tosch

14 réponses


Grafikart
Réponse acceptée

Je te donne ma solution (le blog tourne sur Wordpress /bloc le reste du site sur CakePHP)

Dans le .htaccess à la racine tu modifie les règles :

....
RewriteCond %{REQUEST_FILENAME} !blog
RewriteRule (.*) app/webroot/$1 [L]
...

Et si tu as plusieurs url à négliger :
RewriteCond %{REQUEST_FILENAME} !wiki
RewriteRule (.*) app/webroot/$1 [L]

RewriteCond %{REQUEST_FILENAME} !forum
RewriteRule (.*) app/webroot/$1 [L]

Met un dossier forum et wiki à la racine

Mais lorsque je place mon wiki et forum à la racine et que je fait l'URL:

www.monsite.com/wiki, il tente de chercher le controller wiki avec l'action index...

(btw merci pour ta réponse très rapide!)

Tu peux faire comme ça :

www.monsite.com/wiki/
www.monsite.com/forum/
www.monsite.com/dossier_de_cakephp/

Mais bon ce n'est pas du tout sécurisé, l'astuce c'est de mettre dans le répertoire racine de ton serveur le dossier "app/webroot" et tous les autres dossiers tu les mets juste avant la racine. Comme ça, seul le dossier "app/webroot" reste accessible à partir d'un navigateur.

Ensuite tu déclares le dossier "root" dans le fichier de config d'apache :

DocumentRoot /dossier_de_cakephp/app/webroot

Mais pour faire ceci tu dois avoir accès au fichier de configuration d'apache et au dossier avant la racine...

Merci à vous 3 pour vos réponses.

@Hardware: Je n'ai pas vraiment suivit la structure. Et je n'ai malheureusement pas acces sur le fichier de configuration d'apache (hebergement mutualisé) au sinon je pense que j'aurai modifié le httpd.conf et manipuler les virtual hosts pour avoir des url du type wiki.monsite.com et effectivement mettre /wiki /forum et /cakephp

@Grafikart: C'est exactement cette configuration que je cherchais. Je pensais aussi a une configuration exclusive mais je savais pas dutout comment m'y prendre. Un grand merci
Je teste demain mais je te fais confiance ;)

EDIT:

Je confirme, la méthode de Grafikart fonctionne:

Voici ma structure:

/
/.htaccess
/app
/cake
/index.php
/plugin
/wiki
/forum

Voici la valeur de mon .htaccess a la racine:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/ [L]
   RewriteCond %{REQUEST_FILENAME} !wiki
   RewriteCond %{REQUEST_FILENAME} !forum
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

PS: Pourquoi avoir réécrit 2 fois: RewriteRule (.*) app/webroot/$1 [L] ?

Bonsoir,

Je n'ai pas réussi à faire fonctionner mon blog en utilisant cette méthode. Mon site (sous cake 2.0) est zeschool.com et le blog est censé être accessible à zeschool.com/blog.

J'ai bien mis les fichiers dans un dossier blog à la racine du serveur (donc au même niveau que app et lib).

Mon .htaccess à la racine:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/ [L]
   RewriteCond %{REQUEST_FILENAME} !blog
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

Si vous avez des idées, n'hésitez pas à les partager parce que ça fait plusieurs heures que j'y suis et j'ai vraiment l'impression de tourner en rond. Merci d'avance en tout cas.

Donc tout le site est en cakePHP mais le blog, lui utilise un autre framework c'est ça ?

Je viens d'aller faire un tour sur ton site (très jolie d'ailleur!) et ça à l'air de fonctionner (mise à part peut etre un probleme de CSS au niveau des articles non ?)

Merci pour le compliment, ça fait vraiment plaisir :D

Sinon j'avais pas été très complet sur mon problème. En effet, tout le site est sur cakephp 2.0 et le blog lui est sur wordpress. En revanche, le blog était hébergé sur un mutualisé dont le domaine était zeschool.fr alors que maintenant j'essaye de le rapatrier sur zeschool.com qui pointe vers un dédié. Je créerais ensuite une redirection de zeschool.fr vers zeschool.com.

Si tu vas donc sur http://zeschool.com/blog, tu constateras que le blog ne marche pas.

Au départ j'avais mis mon dossier blog dans le webroot, ce qui avait pour effet de bien m'afficher la page de login pour l'administration, mais c'est tout!

C'est important de préciser que la racine de mon site est le dossier www/app/webroot, donc c'est normal qu'il ne trouve rien lorsque je vais sur zeschool.com/blog.

Si tu as d'autres conseil niveaux design ou organisation des pages n'hésite pas, le site n'est pas encore lancé. Merci de ton aide en tout cas.

Alors justement, webroot est un dossier qui est fait pour etre vu comme etant à la racine pour les composants de l'application cakePHP.
Si tu as une autre application qui ne fait pas partie de l'app cakePHP, tu dois la mettre en dehors de celle-ci.

Si j'ai bien compris ta structure voici ce que tu devrais faire:
Mettre ton application cakePHP sur le dédier /www/
Ensuite mettre ton blog wordpress sur le /www/ egalement
Ensuite modifie le .htaccess situé sur /www/.htaccess comme ceci:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ app/webroot/ [L]
   RewriteCond %{REQUEST_FILENAME} !blog
   RewriteRule (.*) app/webroot/$1 [L]
</IfModule>

Dis moi si j'ai bien compris ta structure ou si le blog est toujours sur le mutualisé.

Oui tu as bien compris la structure et c'est exactement ce que j'ai fais. Sauf que ça ne marche pas.

Tu m'as par contre donné une idée: j'ai modifié le documentroot de mon vhost pour qu'il pointe sur le dossier www/ et non pas sur www/app/webroot. Le site marche toujours très bien, mais en plus j'ai récupéré la page de connexion à wp-admin. Mais c'est toujours la seule page qui s'affiche correctement, car quand j'essaye de m'y connecter, j'ai l'erreur suivante:
Fatal error: Call to undefined function is_admin_bar_showing() in /home/zeschool/www/blog/wp-admin/admin-header.php on line 84

http://zeschool.com/blog n'affiche toujours rien

Je suis d'ailleur etonné que ton site fonctionnait quand ton fichier de config apache pointait la racine sur www/app/webroot ...
Essaye d'ajouter un slash devant le DocumentRoot:

DocumentRoot /www

En fait je pense que c'est plutôt un problème qui relève de la migration de mon blog, parce qu'après tout j'arrive bien à me connecter à mon blog, si tu regardes la source des pages du blog, le header se charge bien.

Je vais donc retenter une installation et je te tiens au courant.

Tant que j'y suis, je vais commenter le contenu graphique sur ton site. (FYI, J'utilise Firefox)

Il manque un border-bottom gris sur l'input du formulaire de recherche en haut a droite.

Dans la partie ressource, la banniere/menu est decallée d'une dizaine de pixels vers le haut. De plus dans le menu, c'est "Accueil" qui est highlighted et non "Ressources". Pareil dans la partie Forum.

Dans forum, je rajouterais un menu horizontal gris en haut (comme dans la partie Ressoruces) avec le menu du forum. Je supprimerais l'image "le forum". Je changerait aussi le titre de la page "Categories" en "Forum".

Pour se connecter et S'inscrire, je changerais le titre "Users" par "Se connecter" et "S'inscrire".
Je changerais le boutton du formulaire "submit" avec le même style que les bouttons "En savoir plus" sur la page d'accueil (gris sur bleu c'est pas évident a lire), et je changerais le value en "Envoyer" (tt le site est en Français, autant le garder comme ça).

Les boutons Fb, twitter, mail et RSS dans le footer sont très chouette, mais je n'aime pas dutt les image hover. Pourquoi ne pas garder la mm image mais changer la couleur ? Ou alors, garder les image hover mais sans l'ombre en dessous, avec la mm circonférence et sans les fines lignes horizontales blanches.

Voila, ce ne sont bien sure que des conseils. Les gouts et les couleurs ...

Merci pour ce retour