Rimuovere /index.php dall'URL Magento dà l'errore 404


26

Sto usando Magento ver. 1.7.0.2.

Ecco il link al mio sito Web: http://dev.blokeundees.com.au/

Devo rimuovere la /index.phpcartella dagli URL, quindi ho modificato il .htaccessfile e anche il back-end (sicuro, riscrive il server Web) ed /index.phpè stato rimosso correttamente.

Ma quando si accede al front-end, restituisce un errore 404 (Pagina non trovata) per ogni pagina tranne la pagina dell'indice.

Non so perché questo stia accadendo.


Come spiegato da @ sander-mangel controlla il tuo htaccessaggiungerò forniscici il tuo contenuto htaccess per avere un'idea di cosa non va
Sylvain Rayé,

1
Sei riuscito a risolvere il problema?
Sander Mangel

Risposte:


27

Come rimuovere index.php dagli URL di Magento

Magento è una piattaforma fantastica per la vendita online, probabilmente la migliore, ma c'è una cosa che mi ha sempre lasciato frustrato come un SEO ... Quella fastidiosa directory index.php nell'URL di TUTTE le pagine interne - incubo!

Non ci sono benefici per loro.

Sono dannosi per la SEO, cattivi per la struttura e la coerenza del sito, e poi sono anche peggio per un URL maniaco pulito come me. Non sono abbastanza sexy. Ripuliamo le cose.

URL Magento SEO friendly in due passaggi

Fortunatamente, mentre stavo facendo un negozio Magento per un cliente di recente, ho fatto un po 'di ricerche e ho trovato una soluzione abbastanza semplice al problema. Implica un paio di modifiche alle impostazioni dell'amministratore di Magento e l'aggiunta o la modifica di un semplice file .htaccess per riordinare la riscrittura dei loro URL di archivio standard.

Segui i semplici passaggi seguenti e sarai un passo avanti verso il successo SEO con il tuo negozio Magento e il tuo SEO non avrà una scusa per una minore rilevanza.

1) Cambiamo un'impostazione, Admin

La prima cosa che devi fare è accedere al tuo pannello di amministrazione Magento (index.php / admin) per cambiare un'impostazione molto semplice che farà sapere a Magento che intendi utilizzare la riscrittura degli URL in tutto il tuo negozio piuttosto che il loro brutto valore predefinito URL.

Accedi e modifica questa impostazione:

Vai a Sistema> Configurazione> Web> Ottimizzazione per i motori di ricerca

Usa riscrittura server Web: SÌ

È stato facile, no? Bene, ora per l'ultimo passaggio.

2) Usiamo un file .htaccess per riscrivere gli URL

Il passaggio finale prevede la creazione di un file .htaccess nella cartella di installazione di Magento al fine di completare le impostazioni modificate in precedenza nelle impostazioni dell'amministratore e ciò riscriverà effettivamente gli URL. Scegli la versione .htaccess applicabile di seguito.

Se il tuo negozio Magento è installato in root (public_html), usa questo:

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

Se il tuo negozio Magento è installato in una sottocartella (public_html / shop), usa questo:

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

Hai finito - spero che ti aiuti!

Sicuramente impedirà al tuo SEO di strappargli i capelli.

Fammi sapere nei commenti qui sotto se lo usi o incontri dei problemi!


2
Questo non funziona nella mia versione di Magento, 1.9.x. Rimuove l' index.phpURL, ma provoca 404s a destra e sinistra.
Sviluppatore estivo

10

Assicurati di avere un .htaccessfile funzionante , facoltativamente puoi prenderlo da un nuovo download della versione di Magento.

Controlla anche se mod_rewriteè abilitato sul tuo server. Questo può essere fatto leggendo il phpinfo();da uno script sul tuo server. Questo post su Stackoverflow ti spiega come.


Inoltre, devi essere sicuro che Sistema -> Configurazione -> Web -> Configurazione motori di ricerca -> Usa riscrittura server Web sia abilitato.
Barbanet,

File funzionante e scrivibile .htaccess .
Raptor

6

Per rimuovere index.phpdagli URL attenersi alla seguente procedura:

  1. Accedi a Magento Admin
  2. Vai a System -> Configuration -> Web
  3. Dalla scheda Ottimizzazione per i motori di ricerca Usa riscrittura server Web selezionare .
  4. Assicurati che i tuoi URL di base sicuri e non sicuri terminino con "/" .
  5. Ora modifica il tuo .htaccess(sarà nella cartella principale di magento) e incolla il codice che viene fornito a questo link

5

Non è necessario modificare altro che i seguenti punti. fai queste due impostazioni e starai bene. in Sistema -> Configurazione -> Web -> Ottimizzazioni motori di ricerca, selezionare SÌ.

E in Sistema -> Configurazione -> Web -> Sicuro -> Usa URL sicuri nel frontend, seleziona SÌ. Aggiorna la cache se il problema persiste, procedi nel seguente file httpd.config. AllowOverride Nessuno cambia in AllowOverride Tutto Tutto sarà OK ora


Nel mio httpd.config, non esiste una riga come, AllowOverride None,. allora come posso cambiare AllowOverride All
zus

3

Principalmente, quando lavoriamo in WAMP / XAMPP, abbiamo bisogno di:

1) per verificare che rewrite_module sia stato abilitato

ad esempio, quando installiamo wampp in C: \ wamp, possiamo trovare httpd.conf in C: \ wamp \ bin \ apache \ apache2.4.9 \ conf e abilitarlo rimuovendo # sign

LoadModule rewrite_module modules/mod_rewrite.so

2) per abilitare RewriteBase

ad esempio, quando installiamo magento v1.9 in C: \ wamp \ www \ magento, dobbiamo modificare il .htaccess predefinito nella cartella principale di magento in modo che sia

RewriteBase /magento/

Inoltre, dobbiamo abilitare la regola di riscrittura predefinita rimuovendo il segno #

RewriteRule .* index.php [L]

3) in Sistema -> Configurazione -> Web -> Ottimizzazioni motori di ricerca, selezionare SÌ.

E in Sistema -> Configurazione -> Web -> Sicuro -> Usa URL sicuri nel frontend, seleziona SÌ.

Quando lavoriamo nel server LAMP, è simile che dobbiamo controllare tutti gli elementi sopra per consentire il funzionamento del modulo di riscrittura, pensando che dovrebbero esserci molte differenze di dettaglio.


3

Soluzione funzionante per rimuovere index.php dall'URL escluso Admin. E se qualcuno inserisce index.php nell'URL, reindirizzerà all'URL che non contiene index.php. Per questo dobbiamo anche impostare, Usa riscrittura server Web - Sì dall'ottimizzazione dei motori di ricerca

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

3

Prima vai su sistema-> configurazione-> web-> Ottimizzazione dei motori di ricerca

E selezionare nel menu a discesa Usa riscrittura server Web

Ora vai alla radice del tuo sito

Aprire il file .htaccess in caso contrario, quindi creare il file .htaccess

in locale questo file è nascosto, quindi è necessario mostrare i file nascosti (ctrl + H)

Ora se la tua radice in public_html / quindi copia questo codice in .htaccess

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

Se il tuo sito è in una sottocartella public_html / yoursite Copia questo codice in .htaccess

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

Dopo aver aggiornato la tua idea, continuando a non funzionare, potresti aiutarmi @ magento.stackexchange.com/q/220973/57334
zus

2

Assicurati che mod_rewrite sia abilitato sul tuo server. Nel mio caso è stato disabilitato. Una volta abilitato nel server, funziona correttamente.


Come posso verificare se mod_rewrite è abilitato o meno nel mio server,
zus

2
  1. Vai alla cartella principale del tuo sito e puoi trovare il file .htaccess. Modificalo e basta. Aprilo su un editor di testo e trova questa riga,

Riscrivi Base / magento /.

Just replace it with

Riscrivi Base /. Inserisci il seguente codice in .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>

Nel caso in cui Magento sia installato in una sottocartella, ad esempio "shop", è necessario utilizzare il seguente codice:

<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. Quindi vai al tuo Pannello di amministrazione e abilita la riscrittura del server Web. Puoi trovarlo in Sistema> Configurazione> Web> Ottimizzazione per i motori di ricerca.

Ora imposta l' opzione "Usa riscrittura server Web" in "Ottimizzazione motori di ricerca" su "Sì".

  1. Quindi, imposta l' opzione "Usa URL sicuri in Frontend" in "Sicuro" su "Sì". Fai clic sul pulsante "Salva configurazione" in alto a destra:

  2. Quindi vai alla pagina Gestione cache (Sistema> Gestione cache) e aggiorna la cache e aggiorna anche i reindirizzamenti Web.


2

Ho dovuto cambiare il seguente testo nel file .htaccess alla radice del progetto magento:

#RewriteBase /magento/

a

RewriteBase /magento/

Nota: basta cambiare magento con il nome del tuo sito web.


2

Rimuovi index.php dall'URL incluse le pagine interne in Magento usando i seguenti passi:

Controlla il pannello di amministrazione: Usa riscrittura server Web "deve essere impostato su" Sì "in Web> Ottimizzazione dei motori di ricerca, quindi segui quanto indicato di seguito in 2 passaggi.

Passaggio 1: --------------- Inserire questo codice sopra tutti i file di layout (1 colonna e tutti gli altri) --------------

<?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();
}
?>

--------------------------------- FINE Passaggio 1 -------------- -------------------------

Passaggio 2: --------------- Inserire questo codice prima di "Riscrivi engion ON" nel file htaccess --------------

index.php sul dominio predefinito

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

Reindirizzamento da 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]

----------------------------------- FINE Passaggio 2 ------------ -------------------------------------

Nota: al passaggio 2, basta modificare l'URL per il tuo sito. Non è necessario fare nulla al passaggio 1.


1

Se qualcuno usa Apache2 Ubuntu 16.04 , non vedi il file httpd.conf da nessuna parte nel server, quindi devi andare al percorso: / etc / apache2 / apache2.conf , che sostituire il codice qui sotto

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

con il codice seguente:

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

Successivamente, riavvia il server: sudo service apache2 restart


0
  • Vai su Sistema> Configurazione> Web> Ottimizzazione per i motori di ricerca> Usa riscritture del server Web seleziona SÌ.
  • sudo a2enmod rewrite
  • riavvio del servizio apache2

Questi 3 hanno funzionato per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.