pretty parameter htaccess crear url-rewriting yii url-routing

url rewriting - parameter - Yii url básico reescribe



yii2 htaccess (1)

Soy nuevo en php, nuevo en mvc, nuevo en yii, y nuevo en la reescritura de URL. Entonces, lo siento, si estoy preguntando algo muy básico.

He ocultado el index.php (del método htaccess discutido en los foros yii)

En mi urlmanager, tengo esto,

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

Tengo 3 archivos en la vista / carpeta del sitio.

  1. ''viaje'',
  2. ''invitación'',
  3. ''linkedin''

Ahora, mi página de inicio debería redireccionar a acción ''viaje'' (es decir, debería abrir el ''sitio / viaje.php'')

Entonces, supongo, esto sería

''/'' => ''site/journey''

Funciona también

Ahora, quiero que ''journey / invite'' invoque la acción ''invite'', es decir, que abra ''site / invite.php''.

Y, ''journey / linkedin'' debería invocar la acción ''linkedin'', es decir, ''site / linkedin.php''.

pero,

''journey/invite'' => ''site/invite'', ''journey/linkedin'' => ''site/linkedin''

no está trabajando.

Además, ¿alguien puede ayudarme a entender esto,

<controller:/w+>/<id:/d+>

es decir, ¿qué es el controlador en url y qué significa ''w +''?

Una referencia a la guía también ayudará.

Editado después de la sugerencia de bool.dev:

Cambió el código, como dijiste (lo intenté antes, eliminando todas las reglas predeterminadas). Ahora mi administrador de url es como,

''/'' => ''site/journey'', ''journey/invite'' => ''site/invite'', ''journey/linkedin'' => ''site/linkedin'', ''<controller:/w+>/<id:/d+>''=>''view'', ''<controller:/w+>/<action:/w+>/<id:/d+>''=>''<controller>/<action>'', ''<controller:/w+>/<action:/w+>''=>''<controller>/<action>'',

Pero arroja un error

"Advertencia: require_once (): open_basedir restricción en efecto. El archivo (/var/xyz.com /../ yii / framework / yii.php) no está dentro de las rutas permitidas: (/ usr / share / php: / usr / share / pear: / usr / share / php / libzend-framework-php: / var / * /tmp:/var/xyz.com) en /var/xyz.com/journey.php en la línea 12 Advertencia: require_once (/var/xyz.com /../ yii / framework / yii.php): error al abrir la secuencia: operación no permitida en /var/xyz.com/journey.php en la línea 12 Error fatal: require_once (): No se pudo abrir correctamente ''/var/xyz.com/../yii/framework/yii.php'' (include_path = ''.: / Usr / share / php: / usr / share / php / libzend-framework-php'') en /var/xyz.com/journey.php en la línea 12 ''

cuando hago xyz.com/journey/invite o incluso xyz.com/journey

Editar:

Era un problema de permiso, la sugerencia de @ bool.dev para poner reglas específicas en la parte superior funcionó :)


Estos dos:

''journey/invite'' => ''site/invite'', ''journey/linkedin'' => ''site/linkedin''

no funcionan porque la URL está siendo igualada por una regla anterior:

''<controller:/w+>/<action:/w+>''=>''<controller>/<action>''

Para evitar que eso suceda, asegúrese de que la regla se menciona al final, antes de que se reescriba cualquier expresión específica (es decir, que no coincida con las expresiones regulares), por lo que las reglas se pueden ver de la siguiente manera:

''journey/invite'' => ''site/invite'', ''journey/linkedin'' => ''site/linkedin'', ''<controller:/w+>/<action:/w+>''=>''<controller>/<action>''

Esto: /w+ significa hacer coincidir cualquier cadena con una o más ocurrencias de cualquier carácter de "palabra" (az 0-9 _) y /d+ significa hacer coincidir cualquier cadena con una o más ocurrencias de cualquier dígito (0-9). Echa un vistazo a php regex .

Editar

No había leído su pregunta completamente antes, el controller en la regla es simplemente un nombre para la expresión coincidente, por lo que podría haber tenido ''<contr:/w+>/<act:/w+>''=>''<contr>/<act>'' .

Edit2

Después de leer su pregunta editada con el conjunto de reglas, afaik podría usar ''''=>''site/journey'' lugar de ''/''=>''site/journey'' .