2009-06-08 21 views
6

Después de 2 horas ahora no pude hacerlo bien.¿Cómo configurar .htaccess para Kohana correctamente, para que no haya feo "index.php /" en la URL?

instalación El Kohana es accesible directamente bajo mi dominio, es decir, "http://something.org/"

En lugar de http://something.org/index.php/welcomde/index Quiero tener direcciones URL como http://something.org/welcome/index

Mi .htaccess está en mal estado por completo. En realidad, es el ejemplo estándar. Htaccess que vino con la descarga. Es casi inútil. En la página kohana hay un tutorial "cómo eliminar el index.php". Es realmente inútil también, ya que ni siquiera hablará sobre cómo eliminarlo. Totalmente confuso

Por favor, ¿alguien puede proporcionar su .htaccess de trabajo para una instalación kohana estándar?

Respuesta

9

Mi htaccess se parece al ejemplo.

RewriteEngine On 

RewriteBase/

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

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

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

Pero también hay que cambiar el archivo config.php a:

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

¿Qué está haciendo - [F, L] y [PT, L]? – Thanks

+0

Consulte el manual de Apache: http://httpd.apache.org/docs/2.2/rewrite/rewrite_flags.html "F | prohibido Utilizando el [F] bandera hace que Apache devuelve un código de estado 403 prohibido el cliente " 'L |.. el último [L] indicador hace mod_rewrite para dejar de procesar el conjunto de reglas En la mayoría de contextos, esto significa que si la regla coincide, no se procesarán más reglas'. "PT | passthrough Se supone que el destino (o cadena de sustitución) en una RewriteRule es una ruta de archivo, de manera predeterminada". – Ambirex

+1

He establecido index_page en '' en application/config/config.php, y utilicé exactamente el mismo .htaccess. Todavía estoy recibiendo este mensaje al dejar de lado el index.php/en mi URL: "No se especificó ningún archivo de entrada" ... muy extraño – Thanks

2

Pruebe esta regla mod_rewrite:

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

Eso no funciona ... – Thanks

+0

Y eso no significa?¿Ya leyó http://kohanaphp.com/tutorials/remove_index – Gumbo

+0

Aparece el mensaje "error de entrada" (página en blanco). Sí, lo hice. No hablan sobre cómo eliminarlo, aunque el título lo promete. Se olvidaron por completo durante el artículo. Es una pena, de verdad. – Thanks

3

En algunos servidores, creo specficially cuando se ejecuta PHP en modo CGI, usted tiene que cambiar

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

a

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

en su htac impuesto. Así que, básicamente, puede usar the kohana recommended setup, simplemente reemplazando index.php/$1 con index.php?/$1

+0

No funciona. Intenté ambos. config.php tiene ese index_page = ''. Aún así, solo puedo acceder a un controlador en funcionamiento si coloco ese index.php/foo dentro de la URL:/ – Thanks

+0

Hrm, el "No se especificó ningún archivo de entrada" es el error exacto que generalmente se corrige al agregar el signo de interrogación. Solo para aclarar, esta corrección era solo para htaccess, nada en el archivo config.php. – Dylan

+0

funciona bien para mí. muchas gracias. – khanh

5

Este es nuestro archivo .htaccess en este momento, y parece estar funcionando.

RewriteEngine On 

# Allow any files or directories that exist to be displayed directly 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

# Rewrite all other URLs to index.php/URL 
RewriteRule .* index.php/$0 [PT,L] 

Tenga en cuenta que tenemos nuestros directorios de aplicaciones, sistemas y módulos fuera de la raíz web.

0

sugiero que le des un vistazo a este enlace: http://codeigniter.com/wiki/mod_rewrite/

Dado que Kohana es un tenedor de CodeIgniter, quizás lo arregles con esto; funcionó para mí (en CodeIgniter).

+0

Para tu información, Kohana comenzó como un tenedor, pero desde entonces ha sido completamente reescrito. – Ambirex

+0

sí, tienes razón, de hecho la mía fue una sugerencia o algo así. Supongo que a partir de la misma base (también si es diferente) ese enlace ayudaría. – apelliciari

1

Para aquellos que reciben "error prohibido" 403 en OSX por defecto con .htaccess asegúrese de agregar como la primera línea en .htaccess

Opciones + FollowSymLinks

0

Kohana 3.2 tiene una convención diferente. Si nos fijamos en Kohana_URL encontrará la función de firma siguiente:

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

donde $ es el índice por defecto en TRUE. Al pasar un $ index FALSE, eliminará la referencia de index.php.

Cuestiones relacionadas