style php url yii

style - Cómo eliminar index.php en Yii Framework



yii2 html checkboxlist (9)

Hola, soy un novato en el marco Yii. Quiero eliminar el index.php de mis URL. Siguiendo la documentación yii cuando puse el código de reescritura del motor en mi archivo .htaccess y estableciendo showScriptName en false en mi archivo config / main.php, recibo el error de 500 servidor interno. Mi archivo .htaccess se encuentra en la carpeta raíz de mi aplicación. Dime dónde estoy haciendo mal

ACTUALIZAR:

Este es el código en mi archivo .htaccess:

# 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


tomado directamente de la documentación yii

Ocultar index.php Hay una cosa más que podemos hacer para seguir limpiando nuestras URL, es decir, ocultar el script de entrada index.php en la URL. Esto requiere que configuremos el servidor web y el componente de la aplicación urlManager.

Primero tenemos que configurar el servidor web para que el script de entrada pueda manejar una URL sin el script de entrada. Para el servidor Apache HTTP, esto se puede hacer activando el motor de reescritura de URL y especificando algunas reglas de reescritura. Podemos crear el archivo /wwwroot/blog/.htaccess con el siguiente contenido. Tenga en cuenta que el mismo contenido también puede colocarse en el archivo de configuración de Apache dentro del elemento Directorio para / wwwroot / blog.

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

A continuación, configuramos la propiedad showScriptName del componente urlManager para que sea falsa.

Ahora si llamamos a $ this-> createUrl (''post / read'', array (''id'' => 100)), obtendremos la URL / post / 100. Más importante aún, esta URL puede ser reconocida adecuadamente por nuestra aplicación web.

Espero que esto ayude, porque también resolvió mi problema.



Acabo de encontrar este hilo, pero me di cuenta de que para que funcionara, no solo tenía que seguir las instrucciones para agregar el archivo .htaccess, sino también descomentar la sección siguiente de mi archivo de configuración principal (/ protected / config / main. php):

// uncomment the following to enable URLs in path-format ''urlManager''=>array( ''urlFormat''=>''path'', ''rules''=>array( ''<controller:/w+>/<id:/d+>''=>''<controller>/view'', ''<controller:/w+>/<action:/w+>/<id:/d+>''=>''<controller>/<action>'', ''<controller:/w+>/<action:/w+>''=>''<controller>/<action>'', ), ),


Haga estos 3 pasos:

  1. Habilite la reescritura de Url en Apache.

  2. Coloque .htaccess en la raíz de su proyecto

RewriteEngine en

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php

  1. En su configuración protected / config / main.php establezca showScriptName en false como este para los componentes de su administrador de url >> urlManager

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


También tuve este problema hoy cuando cambié mi proyecto al servidor de Linux. Hice todo lo que se muestra, pero no ayudó. Luego, he copiado el archivo .htaccess al directorio protegido también, luego funcionó.


cambie su configuración / main.php como a continuación:

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

luego coloque su archivo htaccess en el directorio base con la carpeta protegida (puede estar dentro de la carpeta protegida) coloque el código debajo de su archivo htaccess

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

o intenta con esto ---

RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/?*$ index.php/$1 [L,QSA]

hecho ... espero que funcione


Asegúrese de que después de todos sus cambios en .htaccess y urlManager, si todavía no parece funcionar para ninguno de ustedes, es que ha modificado su parámetro AllowOverride para el directorio raíz en el archivo httpd.conf de Apache a "Todos" en lugar de "Ninguna". Después de la modificación, reinicie Apache. Porque este es el parámetro que permite a apache decidir qué parámetros se pueden anular en el archivo .htaccess


modificar los valores de configuración de apache

AllowOverride none to AllowOverride ALL

en httpd.conf o httpd-vhosts.conf


Si también desea eliminar /index de la URL de la página principal, agregue ''''=>''site/index'' al principio de las reglas de su urlManager, así:

''urlManager''=>array( ''urlFormat''=>''path'', ''showScriptName'' => false, ''rules''=>array( ''''=>''site/index'', ''<action>''=>''site/<action>'',