2012-03-16 23 views
5

He mirado en varios ejemplos de configuraciones de htaccess para sitios web dentro de los subdirectorios, y probado la mayoría de ellos sin éxito del 100%..htaccess para el sitio en el subdirectorio utilizando el framework Yii

Mi configuración es:

  • utilizando el framework Yii
  • .htaccess en public_html/.htaccess
  • sitio ubicado en el interior public_html/mysite directorio
  • manejar todas las solicitudes situados en public_html/mysite/frontend/www/index.php

El índice estado de las direcciones URL:

  • www.mysite.com funciona bien [OK]
  • www.mysite.com/controller/action me muestra la página de inicio [mal]
  • www.mysite.com/mysite/frontend/www/controller/action funciona bien [mal, el elemento anterior debería funcionar en lugar ]

Mi .htaccess en este momento se ve así:

AddHandler application/x-httpd-php53s .php .html 

Options +SymLinksIfOwnerMatch 
IndexIgnore */* 

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

RewriteCond %{HTTP_HOST} ^(www.)?mysite.com$ 
RewriteCond %{REQUEST_URI} !^/mysite/frontend/www 

RewriteRule ^(.*)?$ /mysite/frontend/www/index.php [L] 

He intentado todo, pero no tengo ni idea de por qué www.mysite.com/controller/action no funciona :(

Cualquier ayuda sería muy apreciado! ¡Gracias!

+0

Es posible que necesite que YII diga dónde está la basefoll y qué baseurl representa, pero no soy experto en YII. – hakre

+0

¿Has intentado agregar 'RewriteLog' y' RewriteLogLevel' para ver qué está pasando? http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog –

+0

@hakre, la aplicación de Yii basePath (si eso es lo que quieres decir) se establece en 'Yii :: getPathOfAlias ​​('site.frontend') ', que significa public_html/mysite/frontend /. También intenté agregar RewriteBase a '/ mysite' y'/mysite/frontend/www', pero no cambió nada. – guivalerio

Respuesta

0

Usted no ha mencionado si ha configurado URL del administrador de Yii para URLs limpias. Es necesario, de lo contrario, Yii espera que la "ruta" aparezca como un parámetro GET llamado "r". Si no lo hizo, consulte this section of the definitive guide

+0

Sí, estoy usando URL limpias. 'urlFormat '=>' ruta '' y' 'showScriptName' => falso'. Entonces todo se ve bien en ese lado. – guivalerio

4

he encontrado la respuesta a this similar question para ser útil. Aquí es cómo mis reglas de reescritura terminaron:

#Forward all non-existent files/directories to Yii 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) subdir/index.php/$1 [QSA,L] 

Esta toma todos los archivos/carpetas inexistentes y los envía a la secuencia de comandos yü con el URL inicial anexa. QSA agrega cualquier cadena de consulta que pueda estar presente en la url inicial.

+0

Esto funciona muy bien en mi entorno local, pero por alguna razón no funciona con Hostgator. – gradosevic

0

usted no necesita editar .htaccess. Sólo tiene que mover el guión de entrada Yii (index.php) y el valor predeterminado .htaccess desde el subdirectorio a la web raíz (de forma que residan directamente bajo public_html). Una vez que mueva index.php y .htaccess en el directorio raíz, todas las peticiones web serán enviados directamente a index.php (en lugar de en el subdirectorio), eliminando así la parte/subdirectorio de la URL.

Después de mover los archivos, deberá editar index.php para actualizar las referencias al archivo yii.php (en el directorio Yii framework) así como también al archivo de configuración Yii (main.php). Por último, tendrá que mover el directorio de activos a la Webroot directamente, ya que por defecto, Yu espera que el directorio de activos que se encuentra en la misma ubicación que el guión de entrada).

Eso debería ser todo lo que tiene que hacer, pero si usted necesita más detalles, describir el enfoque plenamente aquí:

http://muhammadatt.tumblr.com/post/83149364519/modifying-a-yii-application-to-run-from-a-subdirectory

0

también no actualizó el archivo .htaccess, más fácil de modificar el httpd.conf host virtual para el subdominio y cambie el DocumentRoot para que apunte a su carpeta yii.

Cuestiones relacionadas