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.


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!


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ć.


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

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


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.


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]

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]

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.


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.


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.


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.


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.