2012-05-06 5 views
29

All meine URLs auf meiner Magento-Installation erfordern index.php in ihnen, wie:Wie man index.php von URLs entfernt?

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

Das Problem ist, dass das System standardmäßig Verbindungen zu URLs wie

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

die ohnehin schöneren aussehen. Ich nehme an, das ist ein Umschreibe-Problem in .htaccess, aber da das Basteln mit dem in der Vergangenheit mir 500 ergeben hat, möchte ich euch zuerst fragen.

Das Ändern der SEO-Einstellungen, das Leeren des Konfigurationscache und das erneute Indizieren von URLs funktionierten nicht as suggested here.

Antwort

84

Dieses alte sein kann, aber ich kann auch schreiben, was ich habe gelernt. Also jedenfalls habe ich es so gemacht.

---------->

Bevor Sie beginnen, stellen Sie sicher, dass der Apache umschreibt Modul aktiviert ist und dann die folgenden Schritte aus.

1) Melden Sie sich bei Ihrem Magento-Administrationsbereich an und gehen Sie dann zu System> Konfiguration> Web.

2) Navigieren zu den Unsecure und Sichere Tabs. Stellen Sie sicher, dass die Ungesicherten und Secure - Base Url Optionen Ihren Domain-Namen enthalten, und lassen Sie den Schrägstrich am Ende der URL nicht ab. Beispiel: http://www.yourdomain.co.uk/

3) Während noch auf der Web Seite navigieren zu Search Engine Optimization Registerkarte und wählen Sie JA unterhalb der Verwenden Web Server Rewrites Option.

4) Navigieren Sie zu dem Sicheren Registerkarte wieder (falls nicht bereits auf sie), und wählen Sie Ja auf den Mit Secure-URLs in Front-End Option.

5) Nun zur Wurzel Ihrer Magento Website-Ordner gehen und diesen Code für .htaccess verwenden:

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

Speichern Sie die .htaccess und die Originaldatei ersetzen. (BITTE MACHEN, ein Backup Ihrer ORIGINAL .htaccess SICHER VOR MIT IHM MESSING !!!)

6) Nun zu System> Cache Management und alle Felder aus und stellen Sie sicher, die Aktionen Dropdown gesetzt auf Refresh, dann senden. (Dies wird natürlich den Cache aktualisieren.

)

---------->

Wenn dies nicht funktioniert bitte diese zusätzlichen Schritte folgen.

7) Gehen Sie erneut zu System> Konfiguration> web. Dieses Mal suchen Sie nach dem aktuellen Konfigurationsumfang und wählen Sie Ihre Website aus dem Dropdown-Menü. (Dies ist natürlich, wird es eingestellt Config auf Standard)

8) Stellen Sie sicher, dass der Unsecure und Sichere Felder enthalten die gleiche Domäne wie die vorherige Standard Config-Datei.

9) Navigieren Sie zu dem Suchmaschinen-Optimierung Registerkarte und wählen Sie Ja unterhalb der Verwendung Web Server Rewrites Abschnitt.

10) Sobald die URLs identisch sind und das Neuschreiben aktiviert ist, speichern Sie diese Seite. Gehen Sie dann zurück und stellen Sie sicher, dass sie alle als Standard ausgewählt sind, und speichern Sie sie bei Bedarf erneut.

11) Wiederholen Sie Schritt 6.

Jetzt index.php Problem behoben werden sollte, und es sollte alles gut sein !!!

Ich hoffe, das hilft, und viel Glück.

+2

es awsome .. dude upvote für Sie –

+0

Ist die Reihenfolge der Zeilen wichtig? – NeoJi

+0

Ich bin mir nicht sicher, ob die Reihenfolge der Zeilen wichtig ist, ich würde mir nicht vorstellen, dass es in diesem Szenario funktioniert. Um sicher zu sein, würde ich das Format wie oben dargestellt beibehalten, da dies für eine gute Anzahl von Leuten zu funktionieren scheint. – Blowtar

7

Wie wäre es damit in der .htaccess:

RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php/$1 [L] 
+1

Keine Veränderung. Magento speichert seinen Zugriff jedoch unter 'var/.htaccess' - wäre das ein Problem? – delwin

+1

Magento speichert ** eins ** seiner htaccess-Dateien in var/.htaccess, es gibt mehrere in seinen Verzeichnisbäumen, um eine entfernte Kompromittierung oder das Lesen privilegierter Standorte zu verhindern. Sie sollten eine in Ihrem Server-Stammverzeichnis haben. –

25

Mit den folgenden Schritten wird es Ihnen hilft.

Schritt 1: Gehen Sie zu Ihrem Site-Stammordner und Sie können die .htaccess Datei dort finden. Öffnen Sie es mit einem Texteditor und finden Sie die Zeile #RewriteBase /magento/. ersetzen Sie es einfach mit #RewriteBase / nehmen Sie den 'magento /'

Schritt 2: Gehen Sie dann zu Ihrem Admin-Panel und aktivieren Sie das Rewrites (set ja für den Einsatz Web Server Rewrites). Sie finden es unter System-> Konfiguration-> Web-> Suchmaschinenoptimierung.

Schritt 3: Wechseln Sie dann zur Seite Cache-Verwaltung (System-Cache-Verwaltung), aktualisieren Sie Ihren Cache und aktualisieren Sie ihn, um die Site zu überprüfen.

+8

Sie ändern einen Kommentar in Schritt 1 - macht überhaupt keinen Sinn –

+3

Sie bearbeiten einen Kommentar .... nutzlos. – versedi

+0

für mich funktioniert es nach dem Aktivieren des Befehls (# entfernen) –

9

Sie haben mod_rewrite in Apache ermöglichen saubere Urls zu machen

arbeiten

wenn mod_rewrite nicht in phpinfo ist, es installieren müssen von

sudo a2enmod rewrite 
sudo apache2ctl -l 

Sie müssen das Auftreten von AllowOverride none zu AllowOverride all ersetzen (in/etc/apache2/sites-enabled/000-Standard)

Restart Apache

sudo service apache2 restart 

In Admin Magento zu System > Configuration > Web > search engine Optimization gehen und „Use Web Server Rewrites“ auf Ja

+0

Für zukünftige Leser: mein Problem stammte von der Standardeinstellung "AllowOverride" auf "None" gesetzt - es sollte auf "All" gesetzt werden (für mindestens mühsame Erfahrung). – Jesse

+0

immer noch es funktioniert nicht. –

+1

Dies löste mein Problem, mit der Standardkonfiguration .htaccess – ilhnctn

1

Ich habe versucht, auf der Post alles ändern, aber nichts gearbeitet hatte. Ich änderte dann die .htaccess-Snippet, das ErJab zu lesen setzen:

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

Die obige Linie es für mich fixiert. Dabei ist * Ordnername * der Magento-Stammordner.

Hoffe, das hilft!

2

Hallo ich bin spät auf die Party .. wollte nur darauf hinweisen, dass die Anweisungen von http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ wirklich nützlich waren.

Ich hatte Ubuntu-Server mit Apache, MySQL installiert und Php so dachte ich, dass ich auf die Überschrift das Verzeichnis erstellen springen könnte, aus dem Magento von serviert wird und ich das gleiche Problem wie die OP erreicht, also hatte ich ' index.php benötigt in allen URLs (oder ich würde 404 nicht gefunden bekommen). Ich ging dann zurück zu Installation und Konfiguration der Apache HTTP-Server und nach dem Neustart Apache funktioniert es perfekt.

Als Referenz mir fehlte:

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

... und

sudo a2enmod rewrite 
sudo service apache2 restart 

this helps

1

Wenn die anderen Lösungen für Sie nicht funktionieren, versuchen Sie dies:

Schritt 1: (wenn die Installation ist in Webroot)

ersetzen

#RewriteBase /magento/ 

mit

RewriteBase/

Schritt 2:

Fügen Sie die folgenden Zeilen (inklusive Server-Betreiber ausschließen, weil Backend index.php intern benötigt)

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] 

direkt nach

RewriteRule .* index.php [L] 

arbeitet Dies ist für mich

Falls es funktioniert immer noch nicht, überprüfen Sie die Magento-Konfiguration: System-> Konfiguration-> Web-> Suchmaschinenoptimierung. Umschreibungen müssen aktiviert sein.

1

Hauptsächlich Wenn Sie Linux-basierte System wie 'Ubuntu' verwenden und dies nur für den Benutzer localhost nicht für den Server vorgeschlagen wird.

Befolgen Sie alle in den vorherigen Antworten genannten Schritte. +

Überprüfen Sie in Apache-Konfiguration dafür.(AllowOverride All) Wenn der Wert von AllowOverride kein Wert ist, ändern Sie ihn in All und starten Sie Apache erneut.

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

Lassen Sie mich wissen, ob dieser Schritt jedem helfen kann. Da es Ihnen Zeit sparen kann, wenn Sie es früher finden.

enter image description here

Ich füge die genaue Linien aus meiner .htaccess-Datei in localhost. für Ihre Referenz

Around Zeilennummer 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] 

Bilder sind für einige Benutzer, der von Bild der aus dem Text leicht zu verstehen:

enter image description here

+0

Ein Bild zum besseren Verständnis für Anfänger hinzugefügt –