Entfernen Sie /index.php von der Magento-URL und es tritt ein 404-Fehler auf

26

Ich benutze Magento ver. 1.7.0.2.

Hier ist der Link zu meiner Website: http://dev.blokeundees.com.au/

Ich muss den /index.phpOrdner von den URLs entfernen, damit ich die .htaccessDatei und das Back-End ebenfalls bearbeitete (sicher, Webserver schreibt neu) und /index.phpordnungsgemäß entfernt wurde.

Beim Zugriff auf das Frontend wird jedoch für jede Seite außer der Indexseite ein 404-Fehler (Seite nicht gefunden) zurückgegeben.

Ich weiß nicht, warum das passiert.

Udit Gupta
quelle
Wie @ sander-mangel erklärt hat, überprüfen Sie Ihr htaccessIch werde uns Ihren htaccess-Inhalt hinzufügen, um eine Vorstellung davon zu bekommen, was falsch ist
Sylvain Rayé
1
Haben Sie es geschafft, das Problem zu lösen?
Sander Mangel

Antworten:

27

So entfernen Sie index.php von Magento-URLs

Magento ist eine fantastische Plattform für den Online-Verkauf, wohl die beste, aber eines hat mich als SEO immer frustriert ... Das nervige index.php-Verzeichnis in der URL ALLER internen Seiten - Alptraum!

Es gibt keinen Vorteil für sie.

Sie sind schlecht für SEO, schlecht für Site-Struktur und Konsistenz, und dann sind sie noch schlimmer für einen sauberen URL-Freak wie mich. Sie sind nicht sexy genug. Lass uns aufräumen.

SEO-freundliche Magento-URLs in zwei Schritten

Glücklicherweise habe ich, als ich kürzlich für einen Kunden ein Magento-Geschäft eröffnete, ein bisschen gegraben und eine ziemlich einfache Lösung für das Problem gefunden. Es sind einige Änderungen an den Magento-Administratoreinstellungen und das Hinzufügen oder Ändern einer einfachen .htaccess-Datei erforderlich, um das Umschreiben der Standard-Store-URLs zu verhindern.

Befolgen Sie die folgenden einfachen Schritte, um dem Erfolg von SEO mit Ihrem eigenen Magento-Shop einen Schritt näher zu kommen, und Ihre SEO wird keine Entschuldigung für eine verminderte Relevanz haben.

1) Lassen Sie uns eine Einstellung ändern, Admin

Das erste, was Sie tun müssen, ist sich in Ihrem Magento Admin-Panel (index.php / admin) anzumelden, um eine sehr einfache Einstellung zu ändern, mit der Magento weiß, dass Sie beabsichtigen, URL-Änderungen in Ihrem gesamten Geschäft vorzunehmen, anstatt die hässlichen Standardeinstellungen zu verwenden URLs.

Melden Sie sich an und ändern Sie diese Einstellung:

Gehen Sie zu System> Konfiguration> Web> Suchmaschinenoptimierung

Verwenden Sie Webserver-Umschreibungen: JA

Das war doch einfach, oder? Okay, jetzt zum letzten Schritt.

2) Verwenden Sie eine .htaccess-Datei, um die URLs neu zu schreiben

Der letzte Schritt besteht darin, eine .htaccess-Datei im Magento-Installationsordner zu erstellen, um die Einstellungen zu ergänzen, die Sie zuvor in Ihren Administratoreinstellungen geändert haben. Dadurch werden die URLs neu geschrieben. Wählen Sie die zutreffende .htaccess-Version aus.

Wenn Ihr Magento-Speicher im Stammverzeichnis (public_html) installiert ist, verwenden Sie Folgendes:

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

Wenn Ihr Magento-Store in einem Unterordner (public_html / shop) installiert ist, verwenden Sie diesen:

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

Du bist fertig - hoffe das hilft!

Es wird definitiv Ihre SEO davon abhalten, seine oder ihre Haare herauszuziehen.

Lassen Sie mich in den Kommentaren unten wissen, wenn Sie dieses verwenden oder auf irgendwelche Probleme stoßen!

mrumair.com
quelle
2
Dies funktioniert in meiner Version von Magento 1.9.x nicht. Es entfernt das index.phpaus der URL, führt aber zu 404s links und rechts.
Summer Developer
10

Stellen Sie sicher, dass Sie eine Arbeitsdatei .htaccesshaben. Optional können Sie diese von einem neuen Magento-Versions-Download herunterladen.

Überprüfen Sie auch, ob mod_rewriteauf Ihrem Server aktiviert ist. Dies kann durch Lesen phpinfo();eines Skripts auf Ihrem Server erfolgen. In diesem Stackoverflow-Beitrag erfahren Sie, wie.

Sander Mangel
quelle
Außerdem müssen Sie sicherstellen, dass System -> Konfiguration -> Web -> Suchmaschinenkonfiguration -> Webserver-Umschreibungen verwenden aktiviert ist.
Barbanet
Arbeits- und beschreibbare .htaccess Datei.
Raptor
6

Zu entfernen index.phpFühren Sie die folgenden Schritte aus, um URLs :

  1. Anmelden Magento Admin
  2. Gehe zu System -> Configuration -> Web
  3. Von Search Engine Optimization Registerkarte Verwenden Sie Web - Server Rewrites wählen JA .
  4. Stellen Sie sicher , dass Ihre sichere und Unsecure Basis Urls sollte am Ende mit „/“ .
  5. Bearbeiten Sie nun Ihren .htaccessCode (befindet sich im Magento-Stammverzeichnis) und fügen Sie den Code ein, der unter diesem Link angegeben ist
Arslan Hashim
quelle
5

Sie müssen nur die folgenden Punkte ändern. Nehmen Sie einfach diese beiden Einstellungen vor und Sie werden in Ordnung sein. Wählen Sie unter System -> Konfiguration -> Web -> Suchmaschinenoptimierungen die Option JA aus.

Und unter System -> Konfiguration -> Web -> Sicher -> Sichere URLs im Frontend verwenden wählen Sie JA. Aktualisieren Sie Ihren Cache, wenn das Problem weiterhin besteht. Befolgen Sie dazu die Anweisungen in der Datei httpd.config. AllowOverride None wechselt zu AllowOverride All All ist jetzt OK

Muhammad Azam
quelle
In meiner httpd.config gibt es keine Zeile wie "AllowOverride None". dann, wie kann ich AllowOverride All ändern
zus
3

Wenn wir in WAMP / XAMPP arbeiten, brauchen wir meistens:

1) um zu überprüfen, ob rewrite_module aktiviert wurde

Wenn wir beispielsweise wampp in C: \ wamp installieren, finden wir die httpd.conf in C: \ wamp \ bin \ apache \ apache2.4.9 \ conf und aktivieren sie durch Entfernen des Zeichens #

LoadModule rewrite_module modules/mod_rewrite.so

2) um RewriteBase zu aktivieren

Wenn wir beispielsweise Magento v1.9 in C: \ wamp \ www \ magento installieren, müssen wir den Standard-.htaccess im Magento-Stammordner bearbeiten

RewriteBase /magento/

Außerdem müssen wir die Standard-Umschreiberegel aktivieren, indem wir das # -Zeichen entfernen

RewriteRule .* index.php [L]

3) Wählen Sie unter System -> Konfiguration -> Web -> Suchmaschinenoptimierungen die Option JA aus.

Und unter System -> Konfiguration -> Web -> Sicher -> Sichere URLs im Frontend verwenden wählen Sie JA.

Wenn wir in LAMP Server arbeiten, ist es ähnlich, dass wir alle obigen Punkte überprüfen müssen, damit das Rewrite-Modul funktioniert, obwohl es viele Detailunterschiede geben sollte.

John Yin
quelle
3

Arbeitslösung zum Entfernen von index.php von der URL ohne Admin.Und wenn jemand index.php in die URL einfügt, wird er zu einer URL weitergeleitet, die index.php nicht enthält. Dazu müssen wir auch die Option "Webserver-Umschreibungen verwenden - Ja" aus der Suchmaschinenoptimierung festlegen

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

Gehen Sie zuerst zu system-> configuration-> web-> Search Engines Optimization

Und wählen Sie ja in Use Web Server Rewrites Dropdown

Gehen Sie jetzt zu Ihrem Site-Stammverzeichnis

Öffnen Sie die .htaccess- Datei, wenn dies nicht der Fall ist .htaccess-Datei erstellen

In der lokalen Version ist diese Datei ausgeblendet, sodass Sie ausgeblendete Dateien anzeigen müssen (Strg + H).

Wenn Sie sich nun in public_html / befinden, kopieren Sie diesen Code in .htaccess

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

Wenn sich Ihre Site in einem Unterordner public_html / yoursite befindet, kopieren Sie diesen Code in .htaccess

RewriteEngine On
RewriteBase /yousite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yousite/index.php [L]
Prinz Patel
quelle
Nach dem Update Ihrer Idee, immer noch nicht funktioniert, können Sie mir helfen, @ magento.stackexchange.com/q/220973/57334
zus
2

Stellen Sie sicher, dass mod_rewrite auf Ihrem Server aktiviert ist. In meinem Fall war es deaktiviert. Sobald ich es im Server aktiviert habe, funktioniert es ordnungsgemäß.

Ravi Bhalodia
quelle
Wie kann ich mich selbst überprüfen , ob mod_rewrite in meinem Server aktiviert ist oder nicht,
zus
2
  1. Gehen Sie zu Ihrem Site-Stammordner und Sie finden die .htaccess-Datei. Bearbeiten Sie das einfach. Öffne es in einem Texteditor und finde diese Zeile,

Rewrite Base / magento /.

Just replace it with

Basis umschreiben. Fügen Sie den folgenden Code in das .htaccess ein

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

Falls Ihr Magento in einem Unterordner installiert ist, zB 'shop', sollten Sie den folgenden Code verwenden:

<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. Gehen Sie dann zu Ihrem Admin-Bereich und aktivieren Sie die Webserver-Umschreibungen. Sie finden es unter System> Konfiguration> Web> Suchmaschinenoptimierung.

Setzen Sie nun die Option "Use Web Server Rewrites" unter "Search Engines Optiomization" auf "Yes".

  1. Setzen Sie dann die Option "Use Secure URLs in Frontend" unter "Secure" auf "Yes". Klicken Sie oben rechts auf die Schaltfläche „Save Config“ (Konfiguration speichern) :

  2. Rufen Sie dann die Seite Cache-Verwaltung auf (System> Cache-Verwaltung) und aktualisieren Sie den Cache sowie die Web-Weiterleitungen.

Ravi Patel
quelle
2

Ich musste nur folgenden Text in der .htaccess-Datei im Stammverzeichnis des Magento-Projekts ändern:

#RewriteBase /magento/

zu

RewriteBase /magento/

Hinweis: Ändern Sie einfach magento mit Ihrem Website-Namen.

Ashish
quelle
2

Entfernen Sie index.php von der URL einschließlich der inneren Seiten in Magento, indem Sie die folgenden Schritte ausführen:

Überprüfen Sie den Admin-Bereich: Use Web Server Rewrites (Webserver-Umschreibungen verwenden). Wählen Sie unter Web> Search Engines Optimization (Web> Suchmaschinenoptimierung) die Option Yes (Ja) und führen Sie die folgenden 2 Schritte aus.

Schritt 1: --------------- Fügen Sie diesen Code über alle Layoutdateien (1 Spalte und alle anderen) ein --------------

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

--------------------------------- ENDE Schritt 1 -------------- -------------------------

Schritt 2: --------------- Fügen Sie diesen Code vor 'Rewrite engion ON' in die htaccess-Datei ein --------------

index.php auf Standarddomäne

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

HTTP zu HTTPS Umleitung

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]

----------------------------------- ENDE Schritt 2 ------------ -------------------------------------

Hinweis: Ändern Sie in Schritt 2 einfach die URL für Ihre Site. In Schritt 1 müssen Sie nichts tun.

Abhinav Singh
quelle
1

Wenn jemand Apache2 Ubuntu 16.04 verwendet , wird die Datei httpd.conf nirgendwo auf dem Server angezeigt. Wechseln Sie daher zum Pfad: /etc/apache2/apache2.conf , und ersetzen Sie den folgenden Code

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

mit folgendem Code:

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

Starten Sie danach den Server neu: sudo service apache2 restart

Baby in Magento
quelle
0
  • Gehen Sie zu System> Configuration> Web> Search Engine Optimization> Use Web Server Rewrites und wählen Sie YES.
  • sudo a2enmod umschreiben
  • Dienst Apache2 Neustart

Diese 3 arbeiteten für mich.

Biplab Router
quelle