URL amigables en hosting Linux (YII)

Silence

Buenas, he estado haciendo un pequeño proyecto YII en mi servidor local (WAMP)en el cual he activado las url amigables. Para ello en mi servidor local he tenido que modificar el .htaccess y el main del proyecto YII.

.htaccess -->

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php 

Y en el main del proyecto:

'urlManager'=>array(
                        'urlFormat'=>'path',
                        'showScriptName'=>false,
                        //'urlSufix'=>
                        'rules'=>array(
                                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
                        ),
                ),

Ahora la cuestión es que he migrado mi proyecto a un hosting de pago Linux, donde el index me carga bien pero los otros enlaces con este tipo de URL no me los encuentra.

En linux tengo que hacer lo del .htaccess de otra manera o what? xD

el error cuando intenta cargar una url es:

The server can not find the requested page:

80.xx.xx.156/~gg/gg/site/about (port 80)

Un saludo

xMarston

No debería fallar ya que para todos los SOs apache funciona de la misma forma, mira a ver si tienes activo el mod_rewrite y si permites la sobreescritura a través de .htaccess.

1 respuesta
PiradoIV

Por seguridad, muchos hostings tienen desactivado "FollowSymLinks", usa "SymLinksIfOwnerMatch" en su lugar. En cualquier caso ese no debería ser el problema, saltaría un error 503.

Con lo que sí que puedes estar teniendo problemas es con RewriteBase, prueba:

Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine on
RewriteBase /

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

Plan B (adapta el RewriteBase a tus necesidades):

Options +SymLinksIfOwnerMatch
IndexIgnore */*
RewriteEngine on
RewriteBase /~gg/gg/site/

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php
1 1 respuesta
Silence

#2 y #3 Gracias por responder. Pues el problema era el "Options +FollowSymLinks" lo he cambiado por Options +SymLinksIfOwnerMatch y ya funciona todo correctamente. Un saludo

1

Usuarios habituales

  • Silence
  • PiradoIV
  • xMarston