Kohana, .htaccess, et $ _GET
-
13-09-2019 - |
Question
Après avoir téléchargé mon projet Kohana à mon serveur GoDaddy, je remarquai mon fichier .htaccess norme ne fonctionnait pas suffisamment pour fournir les URL propres. Après quelques conseils, j'ai fini avec la règle suivante:
RewriteRule .* index.php?kohana_uri=$0 [PT,L]
a mes belles-URL travailler à nouveau, mais aujourd'hui, je trouve que ce peut être briser mon interne moteur de recherche, qui utilise également GET style des variables:
/search?terms=php
Les valeurs ne sont pas trouvés par les scripts. Ils sont sur mon développement serveur qui ne dispose pas de la RewriteRule modifiée, mais pas sur le serveur Godaddy qui emploie le RewriteRule.
Ai-je raison de supposer que la règle est briser une capacité de scripts à lire à partir de $ _GET, et si oui, comment puis-je remédier à cette situation?
La solution
Peut-être à l'aide QSA dans votre rewriterules, comme ceci:
RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L]
Voir la manuel mod_rewrite (citant):
'qsappend | QSA' (append chaîne de requête)
Ce drapeau force le moteur de réécriture pour ajouter une partie de chaîne de requête de la chaîne de substitution à la chaîne existante, au lieu de remplacer il. Utilisez cette fonction lorsque vous souhaitez ajouter plus les données de la chaîne de requête par l'intermédiaire d'une réécriture règle.
pourrait aider (n'a pas été testé dans votre cas particulier, mais je me souviens avoir utilisé il y a quelque temps ce, pour une sorte de problème comme celui-ci)
Autres conseils
Je pense que vous pouvez ajouter: RewriteCond $1 !^(search)
, ou une variante de ces
Si vous voulez utiliser la pratique standard et sans chaîne de requête vous devez simplement suivre ces étapes et cela fonctionnera comme localhost Et vous ne devez pas modifier les règles de réécriture.
Accédez à votre gestionnaire de fichiers de compte GoDaddy -> Répertoire des WebRoot -> Créer php5.ini si elle n'existe pas et placer la ligne suivante: cgi.fix_pathinfo = 1
Maintenant, vous devez redémarrer votre processus Web:
1). Connectez-vous à votre gestionnaire de compte. 2.) Cliquez sur Web Hosting. 3.) À côté du compte d'hébergement que vous souhaitez utiliser, cliquez sur Lancer. 4.) Dans la section Statistiques et moniteurs, cliquez sur Processus système. 5.) Dans la liste à gauche, cliquez sur le processus que vous souhaitez afficher ou cliquez sur Tous les processus pour afficher tous les processus à la fois. 6.) Pour mettre fin à un processus, cliquez sur le bouton d'extrémité correspondante de la barre d'outils.
Vous pouvez maintenant utiliser URI_PROTOCOL comme Auto.