2009-06-08 6 views
6

Après 2 heures maintenant je ne pouvais pas le faire correctement.Comment configurer .htaccess pour Kohana correctement, de sorte qu'il n'y ait pas laid "index.php /" dans l'URL?

L'installation Kohana est accessible directement sous mon domaine, à savoir "http://something.org/"

Au lieu de http://something.org/index.php/welcomde/index Je veux avoir des URL comme http://something.org/welcome/index

Mon .htaccess est foiré complètement. C'est en fait l'example.htaccess standard qui est venu avec le téléchargement. C'est presque inutile. Sur la page kohana est un tutoriel "comment supprimer l'index.php". C'est vraiment inutile, puisqu'il ne parlera même pas de la façon de l'enlever. Totalement déroutant.

S'il vous plaît, quelqu'un peut-il fournir son .htaccess de travail pour une installation kohana standard?

Répondre

9

Mon htaccess ressemble à l'exemple.

RewriteEngine On 

RewriteBase/

RewriteRule ^(application|modules|system) - [F,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule .* index.php/$0 [PT,L] 

Mais vous devez également modifier le fichier config.php à:

$config['index_page'] = ''; 
+0

Que font les choses [F, L] et [PT, L]? – Thanks

+0

Voir le manuel apache: http://httpd.apache.org/docs/2.2/rewrite/rewrite_flags.html « F | interdit Utilisation du pour retourner un code 403 d'état Forbidden drapeau [F] provoque Apache L'indicateur [L] empêche mod_rewrite de traiter le jeu. Dans la plupart des cas, cela signifie que si la règle correspond, aucune autre règle ne sera traitée. "" "L | "PT | passthrough La cible (ou chaîne de substitution) dans une RewriteRule est supposée être un chemin de fichier, par défaut." – Ambirex

+1

J'ai mis l'index_page à '' dans application/config/config.php, et utilisé exactement le même .htaccess. Je reçois toujours ce message en quittant le index.php/dans mon URL: "Aucun fichier d'entrée spécifié" ... très étrange – Thanks

2

Essayez cette règle mod_rewrite:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule !^index\.php index.php%{REQUEST_URI} [L] 
+0

Ça ne marche pas ... – Thanks

+0

Et ça veut dire quoi?Avez-vous déjà lu http://kohanaphp.com/tutorials/remove_index – Gumbo

+0

Il y a le message "erreur de saisie" (page blanche). Oui, je l'ai fait. Ils ne parlent pas de comment l'enlever, bien que le titre le promette. Ils ont complètement oublié à ce sujet pendant l'article. C'est vraiment dommage. – Thanks

3

Sur certains hôtes, je pense que specficially lors de l'exécution PHP en mode CGI, vous devez changer

RewriteRule ^(.*)$ index.php/$1 [L]

à

RewriteRule ^(.*)$ index.php?/$1 [L]

dans votre htac cess. Donc, fondamentalement, vous pouvez utiliser the kohana recommended setup, en remplaçant simplement index.php/$1 avec index.php?/$1

+0

Cela ne fonctionne pas. J'ai essayé les deux. config.php a index_page = ''. Encore je peux seulement venir à un contrôleur fonctionnant si je mets cet index.php/foo dans l'URL:/ – Thanks

+0

Hrm, le "aucun fichier d'entrée spécifié" est l'erreur exacte que l'ajout du point d'interrogation fixe habituellement. Juste pour clarifier, cette correction était pour htaccess seulement, rien dans le fichier config.php. – Dylan

+0

ça marche bien pour moi. Merci beaucoup. – khanh

5

Ceci est notre fichier .htaccess en ce moment, et il semble fonctionner. Notez que nous avons nos répertoires d'application, de système et de modules en dehors de la racine Web.

0

Je vous suggère de donner un coup d'oeil à ce lien: http://codeigniter.com/wiki/mod_rewrite/

Étant donné que Kohana est une fourchette de CodeIgniter, vous allez peut-être régler ça avec ça; cela a fonctionné pour moi (sur CodeIgniter).

+0

Pour info, Kohana a commencé comme une fourchette mais a depuis été complètement réécrit. – Ambirex

+0

oui vous avez raison, en fait, le mien était une suggestion ou quelque chose comme ça. Je suppose qu'à partir de la même base (même si différente) ce lien aiderait. – apelliciari

1

Pour ceux qui sont "erreur interdite" 403 sur Mac OS X avec défaut .htaccess assurez-vous d'ajouter la première ligne .htaccess

options + FollowSymLinks

0

Kohana 3.2 a une autre convention. Si vous regardez dans Kohana_URL vous trouverez la signature de fonction suivante:

public static function site($uri = '', $protocol = NULL, $index = TRUE) 

où $ index est par défaut à TRUE. En passant un index $ FALSE, vous supprimerez la référence index.php.

Questions connexes