2009-08-12 15 views
5

Después de cargar mi proyecto Kohana a mi servidor Godaddy, noté que mi archivo .htaccess estándar no funcionaba lo suficiente como para proporcionar las URL limpias. Después de una cierta dirección, que terminó con la siguiente regla:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

Esta consiguieron mis buenos-URL a trabajar de nuevo, pero hoy me entero de que se puede romper mi interno del motor de búsqueda, que también utiliza GET-estilo variables:

/search?terms=php 

Los scripts no encuentran los valores. Están en mi servidor de desarrollo que no tiene RewriteRule modificado, pero no en el servidor de Godaddy que usa RewriteRule.

¿Estoy en lo cierto al asumir que la regla está rompiendo la capacidad de cualquier script para leer desde $ _GET, y en caso afirmativo, cómo puedo remediar esto?

Respuesta

8

Tal vez usando QSA en sus RewriteRules, así:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

Véase el manual of mod_rewrite (citando):

'qsappend | QSA' (cadena de consulta de datos anexados)

Esta bandera fuerza al motor de reescritura a agregar una cadena de consulta parte de la cadena de sustitución a la cadena existente , en lugar de reemplazar eso. Use esto cuando desee agregar más datos de a la cadena de consulta a través de una regla de reescritura .

podría ayudar (no probado en su caso particular, pero recuerdo haber usado esto hace algún tiempo, por algún tipo de problema como éste)

+0

Eso funcionó. Voy a esperar y permitir que otros participen (ya que sé muy poco sobre .htaccess, y como tal si esta es la mejor solución) antes de aceptar. ¡Gracias! – Sampson

+0

No hay problema :-) de nada! –

1

Creo que podría agregar: RewriteCond $1 !^(search), o una variación de los mismos.

0

Si desea utilizar una práctica habitual y sin cadena de consulta solo necesita seguir estos pasos y funcionará como localhost Y no necesita cambiar las reglas de reescritura.

Ir a su administrador de archivos cuenta de GoDaddy -> directorio WebRoot -> Crear php5.ini si no existe y el lugar siguiente línea: cgi.fix_pathinfo = 1

Ahora tiene que reiniciar el proceso de Web :

1.) Inicie sesión en su administrador de cuentas. 2.) Haga clic en Alojamiento web. 3.) Junto a la cuenta de alojamiento que desea usar, haga clic en Iniciar. 4.) En la sección de monitores Stats &, haga clic en Procesos del sistema. 5.) En la lista de la izquierda, haga clic en el proceso que desea ver o haga clic en Todos los procesos para ver todos los procesos a la vez. 6.) Para finalizar un proceso, haga clic en el botón final correspondiente en la barra de herramientas.

Ahora puede usar URI_PROTOCOL como Automático.

Cuestiones relacionadas