Usuń /index.php z Magento URL daje błąd 404

26

Używam Magento ver. 1.7.0.2.

Oto link do mojej strony: http://dev.blokeundees.com.au/

Muszę usunąć /index.phpfolder z adresów URL, więc edytowałem .htaccessplik i zaplecze (bezpieczne, przepisuje serwer WWW) i /index.phpzostałem poprawnie usunięty.

Ale podczas uzyskiwania dostępu do interfejsu użytkownika zwraca błąd 404 (nie znaleziono strony) dla każdej strony oprócz strony indeksu.

Nie wiem, dlaczego tak się dzieje.

Udit Gupta
źródło
Jak wyjaśnił @ sander-mangel sprawdź htaccess, dodam, podaj treść htaccess, aby dowiedzieć się, co jest nie tak
Sylvain Rayé
1
Czy udało Ci się rozwiązać problem?
Sander Mangel

Odpowiedzi:

27

Jak usunąć index.php z adresów URL Magento

Magento to fantastyczna platforma do sprzedaży online, prawdopodobnie najlepsza, ale jest jedna rzecz, która zawsze mnie frustrowała jako SEO… Ten nieznośny katalog index.php w adresie URL WSZYSTKICH stron wewnętrznych - koszmar!

Nie ma dla nich żadnych korzyści.

Są złe dla SEO, złe dla struktury strony i spójności, a potem są jeszcze gorsze dla maniaka czystego adresu URL, takiego jak ja. Nie są wystarczająco seksowni. Posprzątajmy rzeczy.

Adresy URL Magento przyjazne dla SEO w dwóch krokach

Na szczęście, podczas gdy ostatnio robiłem sklep Magento dla klienta, trochę kopałem i znalazłem dość proste rozwiązanie tego problemu. Wymaga to kilku zmian w ustawieniach administratora Magento oraz dodania lub modyfikacji prostego pliku .htaccess w celu wyeliminowania przepisywania standardowych adresów URL sklepu.

Postępuj zgodnie z poniższymi prostymi krokami, a będziesz o krok bliżej sukcesu SEO w swoim własnym sklepie Magento, a Twoje SEO nie będzie usprawiedliwieniem zmniejszenia trafności.

1) Zmieńmy ustawienie, admin

Pierwszą rzeczą, którą musisz zrobić, to zalogować się do panelu administracyjnego Magento (index.php / admin), aby zmienić bardzo proste ustawienie, które poinformuje Magento, że zamierzasz używać przepisywania adresów URL w całym sklepie zamiast ich brzydkich ustawień domyślnych Adresy URL.

Zaloguj się i zmień to ustawienie:

Wybierz System> Konfiguracja> Internet> Optymalizacja wyszukiwarek

Użyj przepisywania serwera WWW: TAK

To było łatwe, prawda? Okej, teraz ostatni krok.

2) Użyjmy pliku .htaccess, aby przepisać adresy URL

Ostatni krok polega na utworzeniu pliku .htaccess w folderze instalacyjnym Magento w celu uzupełnienia ustawień, które wcześniej zmieniłeś w ustawieniach administratora, a to faktycznie spowoduje przepisanie adresów URL. Wybierz odpowiednią wersję .htaccess poniżej.

Jeśli twój sklep Magento jest zainstalowany w katalogu głównym (public_html), użyj tego:

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

Jeśli twój sklep Magento jest zainstalowany w podfolderze (public_html / shop), użyj tego:

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

Skończyłeś - mam nadzieję, że to pomoże!

To na pewno powstrzyma Twoje SEO przed wyciąganiem włosów.

Daj mi znać w komentarzach poniżej, jeśli używasz tego lub napotykasz jakiekolwiek problemy!

mrumair.com
źródło
2
To nie działa w mojej wersji Magento, 1.9.x. Usuwa index.phpadres URL, ale powoduje 404s w lewo i prawo.
Summer Developer
10

Upewnij się, że masz działający .htaccessplik, opcjonalnie możesz pobrać go ze świeżo pobranej wersji Magento.

Sprawdź także, czy mod_rewritejest włączony na twoim serwerze. Można to zrobić, czytając phpinfo();skrypt ze swojego serwera. Ten post Stackoverflow mówi ci, jak to zrobić.

Sander Mangel
źródło
Musisz także upewnić się, że System -> Konfiguracja -> Internet -> Konfiguracja wyszukiwarek -> Użyj przepisywania serwera WWW jest włączony.
Barbanet
Plik roboczy i zapisywalny .htaccess .
Raptor
6

Aby usunąć index.phpz adresów URL, wykonaj następujące czynności:

  1. Zaloguj się Magento Admin
  2. Iść do System -> Configuration -> Web
  3. Z zakładki Search Engine Optimization Użyj przepisywania serwera WWW wybierz TAK .
  4. Upewnij się, że bezpieczne i Niezabezpieczone adresy bazowe powinny kończyć się „/” .
  5. Teraz edytuj swój .htaccess(będzie w folderze głównym magento) i wklej kod podany pod tym linkiem
Arslan Hashim
źródło
5

Nie musisz zmieniać innych niż następujące punkty. po prostu wykonaj te dwa ustawienia i wszystko będzie dobrze. w System -> Konfiguracja -> Internet -> Optymalizacje wyszukiwarek, wybierz TAK.

I w System -> Konfiguracja -> Internet -> Bezpieczne -> Użyj bezpiecznych adresów URL w interfejsie, wybierz TAK. Odśwież pamięć podręczną, jeśli nadal występuje problem, wykonaj następujące czynności w pliku httpd.config. AllowOverride None zmień na AllowOverride All All będzie teraz OK

Muhammad Azam
źródło
W moim httpd.config nie ma linii typu AllowOverride None,. to w jaki sposób mogę zmienić AllowOverride Wszystko
zus
3

Przeważnie, gdy pracujemy w WAMP / XAMPP, potrzebujemy:

1) sprawdzenie, czy moduł rewrite_module został włączony

na przykład, gdy instalujemy wampp w C: \ wamp, możemy znaleźć httpd.conf w C: \ wamp \ bin \ apache \ apache2.4.9 \ conf i włączyć go poprzez usunięcie znaku #, aby

LoadModule rewrite_module modules/mod_rewrite.so

2), aby włączyć RewriteBase

na przykład, gdy instalujemy magento v1.9 w C: \ wamp \ www \ magento, musimy edytować domyślny plik .htaccess w folderze głównym magento, aby

RewriteBase /magento/

Musimy także włączyć domyślną regułę przepisywania, usuwając znak #

RewriteRule .* index.php [L]

3) w System -> Konfiguracja -> Internet -> Optymalizacje wyszukiwarek, wybierz TAK.

I w System -> Konfiguracja -> Internet -> Bezpieczne -> Użyj bezpiecznych adresów URL w interfejsie, wybierz TAK.

Kiedy pracujemy na serwerze LAMP, podobnie jest, że musimy sprawdzić wszystkie powyższe elementy, aby umożliwić działanie modułu przepisywania, uważając, że powinno być wiele różnic w szczegółach.

John Yin
źródło
3

Działające rozwiązanie do usuwania pliku index.php z adresu URL z wyłączeniem administratora. Jeśli ktoś umieści plik index.php w adresie URL, przekieruje na adres URL, który nie zawiera pliku index.php W tym celu musimy również ustawić opcję Użyj przepisywania serwera WWW - Tak z Optymalizacji wyszukiwarek

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

Najpierw przejdź do system-> konfiguracja-> www-> Optymalizacja wyszukiwarek

I wybierz tak w rozwijanym menu Użyj przepisywania serwera WWW

Teraz przejdź do katalogu głównego witryny

Otwórz plik .htaccess , jeśli nie, utwórz plik .htaccess

lokalnie ten plik jest ukryty, więc musisz pokazać ukryte pliki (Ctrl + H)

Teraz, jeśli twój root w public_html / to skopiuj ten kod do .htaccess

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

Jeśli witryna znajduje się w podfolderze public_html / yoursite Skopiuj ten kod do pliku .htaccess

RewriteEngine On
RewriteBase /yousite/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /yousite/index.php [L]
Książę Patel
źródło
Po aktualizacji swojego pomysłu, nadal nie działaj
zus
2

Upewnij się, że mod_rewrite jest włączony na twoim serwerze. W moim przypadku zostało wyłączone. Po włączeniu go na serwerze działa poprawnie.

Ravi Bhalodia
źródło
Jak mogę sprawdzić, czy mod_rewrite jest włączony, czy nie na moim serwerze,
zus 6'18
2
  1. Przejdź do folderu głównego witryny, aby znaleźć plik .htaccess. Po prostu edytuj to. Otwórz go w edytorze tekstu i znajdź ten wiersz,

Przepisz bazę / magento /.

Just replace it with

Przepisz bazę /. Umieść następujący kod w .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>

Jeśli Twoje Magento jest zainstalowane w podfolderze, np. „Sklep”, powinieneś użyć następującego kodu:

<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. Następnie przejdź do panelu administracyjnego i włącz przepisywanie serwera WWW. Można go znaleźć w System> Konfiguracja> Internet> Optymalizacja wyszukiwarek.

Teraz ustaw opcję „Użyj przepisywania serwera WWW” w „Optiomyzacji wyszukiwarek” na „Tak”.

  1. Następnie ustaw opcję „Użyj bezpiecznych adresów URL w interfejsie użytkownika” w „Bezpieczne” na „Tak”. Kliknij przycisk „Zapisz konfigurację” w prawym górnym rogu:

  2. Następnie przejdź do strony zarządzania pamięcią podręczną (System> Zarządzanie pamięcią podręczną) i odśwież pamięć podręczną, a także odśwież strony internetowe.

Ravi Patel
źródło
2

Po prostu musiałem zmienić następujący tekst w pliku .htaccess w katalogu głównym projektu magento:

#RewriteBase /magento/

do

RewriteBase /magento/

Uwaga: wystarczy zmienić magento za pomocą nazwy swojej witryny.

Ashish
źródło
2

Usuń plik index.php z adresu URL, w tym wewnętrznych stron, z Magento, wykonując następujące czynności:

Sprawdź panel administracyjny: Użyj przepisywania serwera WWW należy ustawić na „Tak” w sieci> Optymalizacja wyszukiwarek, a następnie postępuj zgodnie z podanymi poniżej 2 krokami.

Krok 1: --------------- Wstaw ten kod na wierzchu wszystkich plików układu (1 kolumna i wszystkie inne) --------------

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

--------------------------------- KONIEC Krok 1 -------------- -------------------------

Krok 2: --------------- Wstaw ten kod przed 'Przepisz engion ON' do pliku htaccess --------------

index.php w domenie domyślnej

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

Przekierowanie HTTP na 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]

----------------------------------- KONIEC Krok 2 ------------ -------------------------------------

Uwaga: w kroku 2 po prostu zmień adres URL swojej witryny. Nie musisz nic robić w kroku 1.

Abhinav Singh
źródło
1

Jeśli ktoś używa Apache2 ubuntu 16.04 , nie widzisz pliku httpd.conf nigdzie na serwerze, więc musisz przejść do ścieżki: / etc / apache2 / apache2.conf , zamiast zastąpić poniższy kod

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

z poniższym kodem:

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

Następnie zrestartuj serwer: sudo service apache2 restart

Baby in Magento
źródło
0
  • Przejdź do System> Konfiguracja> Internet> Optymalizacja wyszukiwarek> Użyj przepisywania serwera WWW wybierz TAK.
  • sudo a2enmod przepisz
  • usługa apache2 restart

Te 3 działały dla mnie.

biplab rout
źródło