.htaccess: comment faire multiples .htaccess de travail?
C'est dans le contexte de CakePHP, mais je suis sûr que c'est courant dans d'autres applications. J'ai mis en œuvre les instructions sur cette page:
http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess
Un:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/[L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
B:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/[L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
C:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Dans la section 3, il y a 3 .fichiers htaccess. Nous allons simplement appeler A, B et C, dans l'ordre pour des raisons de simplicité. Bien qu'il semble fonctionner sur mon serveur (localhost XAMPP), je ne suis pas sûr si je comprends le chemin de la redirection. Quelle que soit l'adresse de type I dans, il toujours aller sur localhost\cake\users\login comme il est censé le faire.
Répertoire racine de mon application en termes de où il réside est \gâteau. J'ai \gâteau, \cake\app, et cake\app\webroot avec A, B, et C, respectivement, dans les. Après avoir suivi les instruction ci-dessus, les codes de cake\application de fonctionner, ce qui est ce que je veux. Avant de paramétrer le .htaccess correctement les fichiers comme ci-dessus, les codes \gâteau étaient en cours d'exécution; c'est incorrect car il me disait que ma base de données n'était pas d'installation, vous n'avez pas ce fichier, etc.
Quelqu'un peut-carillon et les aider à m'en sortir avec le "chemin" de cette application est de prendre avant l'exécution de tous les fichiers php? Est-il rediriger tout à cake\app\webroot, alors pour quelle que soit la redirection est de l'installation au-delà de l' .htaccess à partir de là? (dans ce cas, cake\users\login)
Merci pour votre aide!
PS: j'ai honte de dire que je n'ai toujours pas compris la partie du fichier qui est de la redirection vers l'ensemble de la requête HTTP de l'utilisateur de la page de login. J'ai mis cela en place il y a un moment, et je viens de me remettre à elle. Je pense que j'ai été à la suite de la deuxième tutoriel sur la CakePHP Cookbook page où vous ajoutez une liste de fonctionnalité..
- Simple méthode de suivi: ajouter un paramètre de requête de l'url pour chaque ré-écrire:
RewriteRule ...?url=$1&from=fileC
- Marc, est le "..." censé être quelque chose d'autre?
- ouais, c'est le reste de votre réécriture d'url. Juste d'être paresseux par pas de cut 'n-coller le tout. L'important est l'ajout de la
&from=fileC
paramètre de requête. - En fait, je pense que je sais ce que tu veux dire. J'ai essayé d'ajouter ces paramètres pour chacune des règles de réécriture.. Cependant, je ne vois vraiment pas tout affiché sur le chargement de la page.
- Vous êtes en train de faire une redirection dans la réécriture, c'est donc un interne réécrire... ils DOIVENT s'affichent dans le serveur du journal des accès.
- Quand je tape localhost/gâteau, il va à localhost/gâteau/users/login et je viens d'obtenir: [25/Oct/2011:10:24:03 -0700] "GET /gâteau/ HTTP/1.1" 302 - "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1" [25/Oct/2011:10:24:03 -0700] "GET /gâteau/users/login HTTP/1.1" 200 1984 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
Vous devez vous connecter pour publier un commentaire.
En bref, oui. Il y a un seul
.htaccess
fichier faire la réel de travail, et qui est "C" (qui est le fichier dans/app/webroot/.htaccess
). Il transmet toutes les demandes qui ne sont pas de l'existence d'un fichier ou d'un répertoire àindex.php
qui amorce CakePHP et traite la demande. Toute la "redirection" est gérée par CakePHP routage.Edit:
Pour répondre à votre question à propos de ce qui est de la redirection vers la page de connexion, les chances sont que vous avez configuré le Composant Auth et n'avez pas programmé "public" des pages par
$this->Auth->allow()
.Les deux autres sont là, dans le cas où vous mettez le répertoire d'installation de CakePHP ou le répertoire app dans un dossier qui est utilisé par Apache pour servir des pages, par exemple
/var/www/html
ou similaire. Vous remarquerez que la structure est:Ainsi, toute demande à l'un de ces niveaux, finissent par être manipulé par des règles de réécriture en "C". Ceci est fait pour protéger les données sensibles telles que vos informations de connexion à la base de données et s'assurer que l'application fonctionne correctement (comme tous les demandes doivent passer par le CakePHP programme d'amorçage, à moins que vous avez mis en place personnalisée de routage).
La ligne suivante redirige tout à votre page d'index, qui est un Gâteau à construire.
Dans votre cas, je ne pense pas que votre redirections sont directement causés par votre .fichiers htaccess. La racine de votre site htaccess simplement des tuyaux tout à votre page d'index.
Vous devriez envisager de vérifier votre page d'index, cependant. Le contrôleur pour que la page a probablement une clause de défaut pour les arguments d'entrée. Ainsi, si vous entrez une url avec un paramètre inconnu, votre page d'index va simplement afficher un écran de connexion.
C'est mes deux cents. Cependant, j'ai seulement travaillé avec CakePHP comme une expérience, de sorte que quelqu'un avec plus d'expérience n'hésitez pas à me corriger si je me trompe.
Je pense que c'est produit en raison de l'utilisation de composant Auth dans votre application.Vous avez écrit que vous étiez sur le composant Acl partie de cakephp, qui est l'endroit où Auth composant est utilisé.Dans le cas de l'inclusion d'un composant Auth demandé contrôleur, cakephp redirige vers /users/login par défaut si aucun autre rein méthode est spécifiée. Donc je suppose htaccess ne pose pas de problème ici.