Eliminar /index.php de la URL de Magento da error 404

26

Estoy usando Magento ver. 1.7.0.2.

Aquí está el enlace a mi sitio web: http://dev.blokeundees.com.au/

Tengo que eliminar la /index.phpcarpeta de las URL, así que edité el .htaccessarchivo y el backend también (seguro, reescribe el servidor web) y/index.php correctamente.

Pero al acceder al frontend, devuelve un error 404 (página no encontrada) para cada página, excepto la página de índice.

No sé por qué está pasando esto.

Udit Gupta
fuente
Como explicó @ sander-mangel, compruebe que agregaré htaccessnos proporcione su contenido de acceso para tener una idea de lo que está mal
Sylvain Rayé
1
¿Lograste resolver el problema?
Sander Mangel

Respuestas:

27

Cómo quitar index.php de las URL de Magento

Magento es una plataforma fantástica para vender en línea, posiblemente la mejor, pero hay una cosa que siempre me ha dejado frustrado como SEO ... Ese molesto directorio index.php en la URL de TODAS las páginas internas: ¡pesadilla!

No hay beneficio para ellos.

Son malos para el SEO, malos para la estructura y la coherencia del sitio, y luego son aún peores para un monstruo de URL limpio como yo. No son lo suficientemente sexys. Vamos a limpiar las cosas.

SEO URL de Magento amigable en dos pasos

Afortunadamente, mientras estaba haciendo una tienda Magento para un cliente recientemente, investigué un poco y encontré una solución bastante sencilla para el problema. Implica un par de cambios en la configuración de administración de Magento y la adición, o modificación, de un simple archivo .htaccess para resolver la reescritura de sus URL de tienda estándar.

Siga los pasos simples a continuación y estará un paso más cerca del éxito de SEO con su propia tienda Magento, y su SEO no tendrá una excusa para disminuir la relevancia.

1) Cambiemos una configuración, administrador

Lo primero que debe hacer es iniciar sesión en su panel de administración de Magento (index.php / admin) para cambiar una configuración muy simple que le permitirá a Magento saber que tiene la intención de utilizar la reescritura de URL en toda su tienda en lugar de su feo valor predeterminado URLs.

Inicie sesión y cambie esta configuración:

Vaya a Sistema> Configuración> Web> Optimización de motores de búsqueda

Usar reescrituras de servidor web: SÍ

Eso fue fácil, ¿no? Bien, ahora para el paso final.

2) Usemos un archivo .htaccess para reescribir las URL

El último paso consiste en crear un archivo .htaccess en la carpeta de instalación de Magento para complementar la configuración que modificó dentro de la configuración de administración anterior, y esto reescribirá las URL. Elija la versión correspondiente de .htaccess a continuación.

Si su tienda Magento está instalada en root (public_html), use esto:

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

Si su tienda Magento está instalada en una subcarpeta (public_html / shop), use esto:

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

Ya terminaste, ¡espero que ayude!

Definitivamente evitará que su SEO le quite el cabello.

¡Avísame en los comentarios a continuación si usas esto o tienes algún problema!

mrumair.com
fuente
2
Esto no funciona en mi versión de Magento, 1.9.x. Elimina el index.phpde la url, pero da como resultado 404s a la izquierda y a la derecha.
Desarrollador de verano el
10

Asegúrese de tener un .htaccessarchivo que funcione , opcionalmente puede tomarlo de una nueva versión de descarga de Magento.

Compruebe también si mod_rewriteestá habilitado en su servidor. Eso se puede hacer leyendo phpinfo();un script en su servidor. Esta publicación de Stackoverflow te dice cómo.

Sander Mangel
fuente
También debe asegurarse de que Sistema -> Configuración -> Web -> Configuración de motores de búsqueda -> Usar reescrituras de servidor web esté habilitado.
Barbanet
Archivo de trabajo y editable .htaccess .
Raptor
6

Para eliminar index.phpde las URL, siga los pasos a continuación:

  1. Iniciar sesión Magento Admin
  2. Ir System -> Configuration -> Web
  3. En la pestaña Optimización del motor de búsqueda Usar reescrituras del servidor web, seleccione .
  4. Asegúrese de que sus seguros y Unsecure URL base deben terminar con “/” .
  5. Ahora edite su .htaccess(estará en la carpeta raíz de magento) y pegue el código que se proporciona en este enlace
Arslan Hashim
fuente
5

No necesita cambiar más que los siguientes puntos. solo haz estas dos configuraciones y estarás bien. en Sistema -> Configuración -> Web -> Optimizaciones de motores de búsqueda, seleccione SÍ.

Y en Sistema -> Configuración -> Web -> Seguro -> Usar URL seguras en la interfaz, seleccione SÍ. Actualice su caché si aún tiene problemas, siga los pasos en su archivo httpd.config. AllowOverride Ninguno cambia a AllowOverride All All estará bien ahora

Muhammad Azam
fuente
En mi httpd.config, no hay una línea como, AllowOverride None,. entonces, ¿cómo puedo cambiar AllowOverride All
zus
3

Principalmente, cuando trabajamos en WAMP / XAMPP, necesitamos:

1) para comprobar que rewrite_module ha sido habilitado

por ejemplo, cuando instalamos wampp en C: \ wamp, podemos encontrar httpd.conf en C: \ wamp \ bin \ apache \ apache2.4.9 \ conf y habilitarlo eliminando el signo # para que sea

LoadModule rewrite_module modules/mod_rewrite.so

2) para habilitar RewriteBase

por ejemplo, cuando instalamos magento v1.9 en C: \ wamp \ www \ magento, necesitamos editar el .htaccess predeterminado en la carpeta raíz de magento para que sea

RewriteBase /magento/

Y también, debemos habilitar la regla de reescritura predeterminada eliminando el signo #

RewriteRule .* index.php [L]

3) en Sistema -> Configuración -> Web -> Optimizaciones de motores de búsqueda, seleccione SÍ.

Y en Sistema -> Configuración -> Web -> Seguro -> Usar URL seguras en la interfaz, seleccione SÍ.

Cuando trabajamos en el servidor LAMP, es similar que necesitamos verificar todos los elementos anteriores para permitir que funcione el módulo de reescritura, aunque debería haber muchas diferencias de detalles.

John Yin
fuente
3

Solución de trabajo para eliminar index.php de la URL, excluyendo Admin. Y si alguien coloca index.php en la URL, redirigirá a la URL que no contiene index.php. Para esto también tenemos que configurar, Usar reescrituras de servidor web - Sí desde la optimización de motores de búsqueda

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php/admin/
RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]
Digisha
fuente
3

Primero vaya a sistema-> configuración-> web-> Optimización de motores de búsqueda

Y seleccione en el menú desplegable Usar reescrituras del servidor web

Ahora ve a la raíz de tu sitio

Abra el archivo .htaccess si no, luego cree el archivo .htaccess

en local este archivo está oculto, por lo que debe mostrar los archivos ocultos (ctrl + H)

Ahora si su raíz en public_html / luego copie este código en .htaccess

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

Si su sitio está en una subcarpeta public_html / yoursite Copie este código en .htaccess

RewriteEngine On
RewriteBase /yousite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yousite/index.php [L]
Príncipe Patel
fuente
Después de actualizar su idea, todavía no me funciona, ¿podría ayudarme @ magento.stackexchange.com/q/220973/57334
zus
2

Asegúrese de que mod_rewrite esté habilitado en su servidor. En mi caso fue deshabilitado. Una vez que lo habilité en el servidor, funciona correctamente.

Ravi Bhalodia
fuente
¿Cómo puedo comprobar si mod_rewrite está habilitado o no en mi servidor?
zus
2
  1. Vaya a la carpeta raíz de su sitio y puede encontrar el archivo .htaccess. Solo edita eso. Ábrelo en un editor de texto y encuentra esta línea,

Reescribir Base / magento /.

Just replace it with

Reescribir Base /. Pon el siguiente código en el archivo .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>

En caso de que su Magento esté instalado en una subcarpeta, por ejemplo, 'comprar', debe usar el siguiente código:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /shop/
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /shop/index.php [L] </IfModule>
  1. Luego vaya a su Panel de administración y habilite las reescrituras del servidor web. Puede encontrarlo en Sistema> Configuración> Web> Optimización de motores de búsqueda.

Ahora configure la opción "Usar reescrituras de servidor web" en "Optiomización de motores de búsqueda" en "Sí".

  1. Luego, configure la opción "Usar URL seguras en Frontend" en "Seguro" a "Sí". Haga clic en el botón "Guardar configuración" en la esquina superior derecha:

  2. Luego vaya a la página de Administración de caché (Sistema> Administración de caché) y actualice su caché y también actualice los redireccionamientos web.

ravi patel
fuente
2

Solo tuve que cambiar el siguiente texto en el archivo .htaccess en la raíz del proyecto magento:

#RewriteBase /magento/

a

RewriteBase /magento/

Nota: simplemente cambie magento con el nombre de su sitio web.

Ashish
fuente
2

Elimine index.php de la URL que incluye las páginas internas en Magento utilizando los siguientes pasos:

Verifique el panel de administración: Usar reescrituras de servidor web 'debe establecerse en' Sí 'en Web> Optimización de motores de búsqueda y luego siga los pasos 2 a continuación.

Paso 1: --------------- Inserte este código en la parte superior de todos los archivos de diseño (1 columna y todos los demás) --------------

<?php 
$abc = Mage::helper('core/url')->getCurrentUrl();
if(strpos($abc,'index.php/') !== false) {
$pos = strpos($abc,'index.php/');
$p1 = substr($abc,0,$pos);
$p2 = substr($abc,$pos+10,strlen($abc));
$url = $p1.$p2;
header("HTTP/1.1 301 Moved Permanently");
header("Location: $url");
exit();
}
?>

--------------------------------- FIN Paso 1 -------------- -------------------------

Paso 2: --------------- Inserte este código antes de 'Rewrite engion ON' en el archivo htaccess --------------

index.php en el dominio predeterminado

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)index.php$ www.abc.com [R=301,L]
RewriteCond %{HTTP_HOST} ^abc.com$ [NC]

Redirección de HTTP a HTTPS

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_URI} !^/downloader.*$
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

----------------------------------- FIN Paso 2 ------------ -------------------------------------

Nota: en el paso 2, simplemente cambie la URL de su sitio. No necesito hacer nada en el paso 1.

Abhinav Singh
fuente
1

Si alguien usa Apache2 ubuntu 16.04 , no ve el archivo httpd.conf en ninguna parte del servidor, por lo que debe ir a la ruta: / etc / apache2 / apache2.conf , que reemplazar el código siguiente

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

con el siguiente código:

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

Después de esto, reinicie el servidor: sudo service apache2 restart

Bebé en magento
fuente
0
  • Vaya a Sistema> Configuración> Web> Optimización de motores de búsqueda> Usar reescrituras de servidor web, seleccione SÍ.
  • sudo a2enmod reescribir
  • servicio apache2 reiniciar

Estos 3 funcionaron para mí.

ruta biplab
fuente