Cómo eliminar el índice.php desde URLs?


Todas mis URL en mi instalación de Magento requieren índice.php en ellos, como:

http://example.com/index.php/admin/
http://example.com/index.php/customer/account/login/

El problema es que el sistema por defecto enlaza a URLs como

http://example.com/admin/
http://example.com/customer/account/login/

Que se ven más bonitas de todos modos. Asumo que esto es un problema de reescritura en .htaccess, pero como jugar con eso en el pasado me ha dado 500, me gustaría preguntarles primero.

Cambiar la configuración de SEO, limpiar la caché de configuración y reindexar URL no funcionó como se sugiere aquí.

Author: Community, 2012-05-07

8 answers

Esto puede ser viejo, pero también puedo escribir lo que he aprendido. Así que lo hice de esta manera.

---------->

Antes de comenzar, asegúrese de que el módulo Apache rewrites esté habilitado y luego siga los pasos a continuación.

1) Inicie sesión en su área de administración de Magento y luego vaya a Sistema > Configuración > Web .

2) Vaya a las pestañas Unsecure y Secure. Asegúrese de que los No seguros y Seguros - Url base las opciones tienen tu nombre de dominio dentro, y no dejes la barra inclinada hacia adelante al final de la URL. Ejemplo: http://www.yourdomain.co.uk/

3) Mientras aún esté en la página Web, vaya a la pestaña Search Engine Optimization y seleccione YES debajo de la opción Use Web Server Rewrites.

4) Vaya a la pestaña Secure de nuevo (si no está ya en ella) y seleccione Yes en el Use URL seguras en el Front-End opcion.

5) Ahora vaya a la raíz de su carpeta de sitio web de Magento y use este código para su .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Guardar el .htaccess y reemplazar el archivo original. (POR FAVOR, ASEGÚRESE DE HACER UNA COPIA DE SEGURIDAD DE SU ORIGINAL .ARCHIVO htaccess ANTES DE JUGAR CON ÉL!!!)

6) Ahora vaya a System > Cache Management y seleccione todos los campos y asegúrese de que el menú desplegable Actions esté configurado en Refresh, luego envíe. (Esto, por supuesto, refrescará el Cache.)

---------->

Si esto no funcionó, siga estos pasos adicionales.

7) Vaya a Sistema > Configuración > web de nuevo. Esta vez busque el Ámbito de configuración actual y seleccione su sitio web en el menú desplegable. (Esto es, por supuesto, se establece en la configuración predeterminada)

8) Asegúrese de que los campos Unsecure y Secure contienen el mismo dominio que el archivo de configuración predeterminado anterior.

9) Vaya a la búsqueda Optimización de motores pestaña y seleccione Yes debajo de la sección Use Web Server Rewrites.

10) Una vez que las URL son las mismas, y la reescritura está habilitada, guarde esa página, luego regrese y asegúrese de que todas estén marcadas como predeterminadas, luego vuelva a guardarlas si es necesario.

11) Repita el paso 6.

Ahora su índice.el problema de php debe ser solucionado y todo debe estar bien!!!

Espero que esto ayude, y buena suerte.

 85
Author: Blowtar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-20 13:04:45

Siga los siguientes pasos que le ayudarán.

Paso 1: Vaya a la carpeta raíz de su sitio y puede encontrar el archivo .htaccess allí. Ábrelo con un editor de texto y encuentra la línea #RewriteBase /magento/. Simplemente reemplázalo con #RewriteBase / saca solo el 'magento/'

Paso 2: Luego vaya a su panel de administración y habilite las Reescrituras(establezca para Usar Reescrituras del servidor Web). Puede encontrarlo en System- > Configuration->Web - > Search Engine Optimization.

Paso 3: Luego vaya a la página de administración de caché (gestión de caché del sistema ) y actualizar su caché y actualizar para comprobar el sitio.

 25
Author: Sankar Subburaj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-22 08:14:59

Tienes que habilitar mod_rewrite en apache para hacer que las URL limpias funcionen

Si mod_rewrite no está en phpinfo, debe instalarlo mediante

sudo a2enmod rewrite
sudo apache2ctl -l

Debe reemplazar la ocurrencia de AllowOverride none a AllowOverride all (en /etc/apache2/sites-enabled/000-default)

Reiniciar Apache

sudo service apache2 restart

En el administrador de Magento vaya a System > Configuration > Web > search engine Optimization y cambie "Use Web Server Rewrites " a Sí

 9
Author: Akhilraj N S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-12 07:21:22

¿Qué tal esto en su .htaccess:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
 7
Author: ErJab,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-06 22:26:12

Hola, llego tarde a la fiesta.. sólo quería señalar que las instrucciones de http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ fueron realmente útiles.

Tenía Ubuntu server instalado con Apache, MySQL y Php, así que pensé que podía saltar al encabezado Creando el directorio desde el que se servirá Magento y llegué al mismo problema que el OP, es decir, tenía 'index.php ' necesario en todas las URL (o me gustaría obtener 404 no se encuentra). Me luego volvió a Instalando y configurando el servidor HTTP Apache y después de reiniciar apache funciona perfectamente.

Como referencia, me faltaba:

sudo bash -c "cat >> /etc/apache2/conf.d/servername.conf <<EOF
ServerName localhost
EOF"

... y

sudo a2enmod rewrite
sudo service apache2 restart

Espero que esto ayude

 2
Author: Jonno,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-28 12:34:58

Si las otras soluciones no funcionan para usted, pruebe esto:

Paso 1: (si su instalación está en webroot)

Sustitúyase

    #RewriteBase /magento/

Con

    RewriteBase /

Paso 2:

Agregue las siguientes líneas (incluido excluir admin porque el backend necesita índice.php internamente)

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://www.yourdomain.com/$1 [R=301,L]
RewriteRule ^index.php/(admin|user)($|/) - [L]
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]

Justo después de

RewriteRule .* index.php [L] 

Esto funciona para mí

En caso de que todavía no funcione, verifique la configuración de Magento: Sistema->Configuración->Web->Motor De Búsqueda Optimización. Las reescrituras deben estar habilitadas.

 2
Author: Stefan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-12-02 19:17:38

Probé todo en el post pero nada había funcionado. Luego cambié el .fragmento de htaccess que ErJab puso para leer:

RewriteRule ^(.*)$ 'folder_name'/index.php/$1 [L]

La línea anterior lo arregló para mí. donde * folder_name * es la carpeta raíz de magento.

Espero que esto ayude!

 1
Author: nanyaks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-14 14:02:01

Principalmente si está utilizando un sistema Basado en Linux Como 'Ubuntu' y esto solo se sugiere para el usuario localhost no para el servidor.

Siga todos los pasos mencionados en las respuestas anteriores. +

Compruebe la configuración de Apache. (AllowOverride All) Si el valor de AllowOverride es none, cámbielo a All y reinicie apache de nuevo.

<Directory /var/www/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

Hazme saber si este paso ayuda a alguien. Ya que puede ahorrarle tiempo si lo encuentra antes.

introduzca la descripción de la imagen aquí

Yo soy añadiendo las líneas exactas de mi archivo htaccess en localhost. para su referencia

Alrededor de la línea número 110

<IfModule mod_rewrite.c>

############################################
## enable rewrites

Options +FollowSymLinks
RewriteEngine on

############################################
## you can put here your magento root folder
## path relative to web root

#RewriteBase /

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Las imágenes son para algunos usuarios que entienden fácilmente desde la imagen o desde el texto:

introduzca la descripción de la imagen aquí

 1
Author: Suyash Kumar Bharti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-11 07:51:34