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.
Prueba esto
Una buena descripción está disponible aquí
http://www.yiiframework.com/doc/guide/1.1/en/topics.url#hiding-x-23x
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:
Habilite la reescritura de Url en Apache.
Coloque .htaccess en la raíz de su proyecto
RewriteEngine en
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php
- 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>'',