Hapus /index.php dari URL Magento memberikan 404 kesalahan


26

Saya menggunakan Magento ver. 1.7.0.2.

Ini dia tautan ke situs web saya: http://dev.blokeundees.com.au/

Saya harus menghapus /index.phpfolder dari URL jadi saya mengedit .htaccessfile dan backend juga (aman, server web menulis ulang) dan /index.phptelah dihapus dengan benar.

Tetapi ketika mengakses frontend, ia mengembalikan kesalahan 404 (Halaman tidak ditemukan) untuk setiap halaman kecuali halaman indeks.

Saya tidak tahu mengapa ini terjadi.


Seperti yang dijelaskan oleh @ sander-mangel, cek Anda, htaccesssaya akan menambahkan, berikan kami konten htaccess Anda untuk mendapatkan ide apa yang salah
Sylvain Rayé

1
Apakah Anda berhasil menyelesaikan masalah?
Sander Mangel

Jawaban:


27

Cara Menghapus index.php dari URL Magento

Magento adalah platform yang fantastis untuk berjualan online, bisa dibilang yang terbaik, tetapi ada satu hal yang selalu membuat saya frustrasi sebagai SEO ... Direktori index.php yang sial itu di URL SEMUA halaman internal - mimpi buruk!

Tidak ada manfaatnya bagi mereka.

Mereka buruk untuk SEO, buruk untuk struktur situs dan konsistensi, dan kemudian mereka lebih buruk untuk URL aneh seperti saya. Mereka tidak cukup seksi. Mari kita bereskan.

URL Magento SEO Friendly dalam Dua Langkah

Untungnya, ketika saya sedang melakukan toko Magento untuk klien baru-baru ini, saya melakukan sedikit penggalian dan menemukan solusi yang cukup mudah untuk masalah ini. Ini melibatkan beberapa perubahan pada pengaturan admin Magento dan penambahan, atau modifikasi, file .htaccess sederhana untuk memilah-milah penulisan ulang URL toko standar mereka.

Ikuti langkah-langkah sederhana di bawah ini dan Anda akan selangkah lebih dekat ke kesuksesan SEO dengan toko Magento Anda sendiri, dan SEO Anda tidak akan memiliki alasan untuk relevansi yang menurun.

1) Ayo Ubah Pengaturan, Admin

Hal pertama yang perlu Anda lakukan adalah masuk ke panel admin Magento Anda (index.php / admin) untuk mengubah pengaturan yang sangat sederhana yang akan membuat Magento tahu bahwa Anda berniat untuk menggunakan penulisan ulang URL di seluruh toko Anda daripada standar jeleknya. URL.

Masuk, dan ubah pengaturan ini:

Buka Sistem> Konfigurasi> Web> Optimasi Mesin Pencari

Gunakan Penulisan Ulang Server Web: YA

Itu mudah, bukan? Oke, sekarang untuk langkah terakhir.

2) Mari Kita Gunakan File .htaccess untuk Menulis Ulang URL

Langkah terakhir melibatkan membuat file .htaccess di folder instalasi Magento untuk memuji pengaturan yang Anda ubah dalam pengaturan admin Anda sebelumnya, dan ini sebenarnya akan menulis ulang URL. Pilih versi .htaccess yang berlaku di bawah ini.

Jika toko Magento Anda dipasang di root (public_html), gunakan ini:

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

Jika toko Magento Anda dipasang di subfolder (public_html / shop), gunakan ini:

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

Anda selesai - harapan itu membantu!

Ini pasti akan menghentikan SEO Anda dari mencabut rambutnya.

Beri tahu saya di komentar di bawah jika Anda menggunakan ini atau mengalami masalah apa pun!


2
Ini tidak berfungsi di versi Magento saya, 1.9.x. Ini menghapus index.phpdari url, tetapi menghasilkan 404s kiri dan kanan.
Pengembang Musim Panas

10

Pastikan Anda memiliki .htaccessfile yang berfungsi , secara opsional Anda dapat mengambilnya dari unduhan versi Magento yang baru.

Periksa juga apakah mod_rewritediaktifkan di server Anda. Itu bisa dilakukan dengan membaca phpinfo();dari skrip di server Anda. Posting Stackoverflow ini memberitahu Anda caranya.


Anda juga perlu memastikan bahwa Sistem -> Konfigurasi -> Web -> Konfigurasi Mesin Pencari -> Gunakan Server Web Penulisan Ulang diaktifkan.
Barbanet

File yang berfungsi & dapat ditulis.htaccess .
Raptor

6

Untuk menghapus index.phpdari URL, ikuti langkah-langkah di bawah ini:

  1. Masuk Admin Magento
  2. Pergi ke System -> Configuration -> Web
  3. Dari tab Optimasi Mesin Pencari Gunakan Web Server Rewrites pilih YES .
  4. Pastikan url dasar Aman dan Tidak Aman Anda harus diakhiri dengan "/" .
  5. Sekarang edit .htaccessfile Anda (akan berada di folder root magento) dan tempel kode yang diberikan pada tautan ini

5

Anda tidak perlu mengubah selain mengikuti poin. lakukan saja dua pengaturan ini dan Anda akan baik-baik saja. di Sistem -> Konfigurasi -> Web -> Optimasi Mesin Pencari, pilih YES.

Dan di System -> Configuration -> Web -> Secure -> Gunakan URL aman di frontend, pilih YES. Refresh cache Anda jika masih menghadapi masalah jangan ikuti di file httpd.config Anda. AllowOverride Tidak ada yang berubah menjadi AllowOverride Semua Semua akan beres sekarang


Di httpd.config saya, tidak ada baris seperti, AllowOverride None,. lalu bagaimana saya bisa mengubah AllowOverride All
zus

3

Sebagian besar, ketika kita bekerja di WAMP / XAMPP, kita perlu:

1) untuk memeriksa rewrite_module telah diaktifkan

misalnya, ketika kita menginstal wampp di C: \ wamp, kita dapat menemukan httpd.conf di C: \ wamp \ bin \ apache \ apache2.4.9 \ conf dan mengaktifkannya dengan menghapus # sign to be

LoadModule rewrite_module modules/mod_rewrite.so

2) untuk mengaktifkan RewriteBase

misalnya, ketika kita menginstal magento v1.9 di C: \ wamp \ www \ magento, kita perlu mengedit .htaccess default di folder root magento menjadi

RewriteBase /magento/

Dan juga, kita perlu mengaktifkan aturan penulisan ulang default dengan menghapus tanda #

RewriteRule .* index.php [L]

3) di Sistem -> Konfigurasi -> Web -> Optimasi Mesin Pencari, pilih YES.

Dan di System -> Configuration -> Web -> Secure -> Gunakan URL aman di frontend, pilih YES.

Ketika kita bekerja di server LAMP, sama halnya kita perlu memeriksa semua item di atas untuk mengaktifkan modul penulisan ulang, berpikir ada banyak perbedaan rincian.


3

Solusi yang berfungsi untuk menghapus index.php dari URL tidak termasuk Admin. Dan jika ada yang menempatkan index.php di URL, URL tersebut akan dialihkan ke URL yang tidak mengandung index.php. Untuk ini, kita juga perlu mengatur, Gunakan Penulisan Ulang Server Web - Ya dari Optimasi Mesin Pencari

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

3

Pertama pergi ke system-> konfigurasi-> web-> Optimasi Mesin Pencari

Dan pilih ya di dropdown Use Web Server Rewrites

Sekarang Pergi ke root situs Anda

Buka file .htaccess jika tidak maka buat file .htaccess

di lokal file ini disembunyikan sehingga Anda perlu menampilkan file tersembunyi (ctrl + H)

Sekarang jika root Anda di public_html / lalu salin kode ini ke .htaccess

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

Jika Situs Anda berada dalam subfolder public_html / yoursite, salin kode ini dalam .htaccess

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

Setelah memperbarui ide Anda, masih belum berfungsi, bisakah Anda membantu saya @ magento.stackexchange.com/q/220973/57334
zus

2

Pastikan mod_rewrite diaktifkan di server Anda. Dalam kasus saya itu dinonaktifkan. Setelah saya mengaktifkannya di server, itu berfungsi dengan baik.


Bagaimana saya dapat memeriksa diri saya apakah mod_rewrite diaktifkan atau tidak di server saya,
zus

2
  1. Goto folder root situs Anda dan Anda dapat menemukan file .htaccess. Edit saja itu. Buka di editor teks dan temukan baris ini,

Basis Penulisan Ulang / magento /.

Just replace it with

Basis Penulisan Ulang /. Masukkan kode berikut dalam .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>

Jika Magento Anda dipasang di sub-folder, misalnya 'toko', Anda harus menggunakan kode berikut:

<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. Kemudian goto Panel Admin Anda dan aktifkan Server Web Menulis Ulang. Anda dapat menemukannya di System> Configuration> Web> Search Engine Optimization.

Sekarang atur opsi “Use Web Server Rewrites” di bawah “Search Engine Optiomization” menjadi “Ya”.

  1. Kemudian, atur opsi "Gunakan URL Aman di Frontend" di bawah "Aman" ke "Ya". Klik tombol "Simpan Konfigurasi" di kanan atas:

  2. Lalu buka halaman Manajemen Cache Anda (Sistem> Manajemen Cache) dan segarkan Cache Anda dan juga segarkan Pengalihan Web.


2

Saya hanya perlu mengubah teks berikut dalam file .htaccess di root dari proyek magento:

#RewriteBase /magento/

untuk

RewriteBase /magento/

Catatan: cukup ganti magento dengan nama situs web Anda.


2

Hapus index.php dari URL termasuk halaman dalam ke Magento menggunakan langkah-langkah berikut:

Periksa panel admin: Gunakan Penulisan Ulang Server Web 'harus diatur ke' Ya 'di Web> Optimasi Mesin Pencari dan kemudian ikuti yang diberikan di bawah 2 langkah.

Langkah 1: --------------- Masukkan kode ini di atas semua file tata letak (1 kolom dan lainnya) --------------

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

--------------------------------- AKHIR Langkah 1 -------------- -------------------------

Langkah 2: --------------- Masukkan kode ini sebelum 'Menulis ulang engion ON' ke dalam file htaccess --------------

index.php pada domain default

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

Pengalihan HTTP ke 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]

----------------------------------- AKHIR Langkah 2 ------------ -------------------------------------

Catatan: Di langkah 2, ubah saja URL untuk situs Anda. Tidak perlu melakukan apa pun di langkah 1.


1

Jika ada yang menggunakan Apache2 ubuntu 16.04 , Anda tidak melihat file httpd.conf di server, jadi Anda harus pergi ke path: / etc / apache2 / apache2.conf , daripada mengganti kode di bawah ini

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

dengan kode di bawah ini:

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

Setelah ini, mulai ulang server: sudo service apache2 restart


0
  • Pergi ke Sistem> Konfigurasi> Web> Optimasi Mesin Pencari> Gunakan Penulisan Ulang Server Web, pilih YES.
  • sudo a2enmod menulis ulang
  • service apache2 restart

3 ini bekerja untuk saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.