Magento Backend 404 untuk semua kecuali dua cakupan konfigurasi "Situs Web"

14

Dalam konfigurasi Multiwebsite / Multistore kami (tampilan) Magento 1.9.2.2, salah satu situs web, termasuk store dan storeview harus dihapus.

Sementara penghapusan itu sendiri berjalan dengan baik (saya sudah melakukan ini sebelumnya), saya telah berakhir dengan backend bahwa 404 jika Anda mengubah Lingkup Konfigurasi Saat Ini Anda ke salah satu dari dua Website.

Memilih Lingkup Konfigurasi baru akan menghasilkan permintaan untuk url berikut (jalur admin + kunci diubah):

/index.php/mymageadmin/system_config/edit/section/dev/website/<WEBSITE>/key/1221231/

di mana <WEBSITE>sama dengan codebidang dalam core_websitetabel.

Dengan masuknya permintaan mysql, saya melihat bahwa dua situs web yang dapat dimuat berhasil memiliki kueri ini terkait dengan pemilihan situs web / tampilan toko:

SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '4') AND (`path` LIKE 'dev/%')
SELECT `core_website`.* FROM `core_website` WHERE (`core_website`.`code`='working_store_code')

Situs web lain yang memberikan awal 404 dengan kueri pertama yang sama - tetapi tentu saja scope_id yang berbeda, tetapi dalam kueri kedua Magento berpikir ia harus mencari cakupan storeviewalih-alih website! Tampaknya mencoba dua kali.

SELECT `main_table`.* FROM `core_config_data` AS `main_table` WHERE (`scope` = 'websites') AND (`scope_id` = '3') AND (`path` LIKE 'dev/%')
SELECT `core_store`.* FROM `core_store` WHERE (`core_store`.`store_id`=3) ORDER BY `sort_order` ASC
SELECT `core_store`.* FROM `core_store` WHERE (`core_store`.`store_id`=3) ORDER BY `sort_order` ASC

Tabel core_website saya terlihat sebagai berikut:

website_id code           sort_order     default_group_id  is_default
0          admin          0              0                 0
1          working_one    1              1                 1
3          failing_one    2              4                 0
4          working_two    3              9                 0
6          failing_two    4              16                0
7          failing_three  5              15                0
8          failing_four   6              17                0
9          failing_six    7              18                0

working_xxx = muat ini OK, failing_xxx = ini beri 404 / coba pilih store_id yang tidak ada.

Tabel core_store saya terlihat sebagai berikut: (kode + nama dihapus karena tidak relevan)

store_id website_id group_id sort_order is_active
0        0          0        0          1
1        1          1        0          1
4        3          4        1          1
5        3          4        2          1
10       4          9        0          1
19       7          15       0          1
20       4          9        1          1
21       4          9        2          1
22       4          9        4          0
23       6          16       1          1
24       6          16       2          1
26       4          9        4          1
28       7          15       0          1
29       1          1        2          1
30       8          17       0          1
31       9          18       0          1
32       9          18       0          1
33       8          17       2          1
34       8          17       3          1
35       8          17       4          1
36       4          9        10         1

Dan ini adalah core_store_group:

group_id website_id name            root_cat_id default_store_id
1        1          working_one     50          1
4        3          failing_one     44          4
9        4          working_one     77          10
15       7          failing_two     70          19
16       6          failing_three   46          23
17       8          failing_four    50          30
18       9          failing_five    96          31

Saya telah membandingkan ketiga tabel ini dengan salinan cadangan DB saya sebelum saya menghapus situs web / storeview dan - kecuali untuk penghapusan situs web / storeview - semuanya tampak persis sama. ID yang sama, kode yang sama dll.

Sejauh yang saya tahu tiga tabel ini adalah satu-satunya yang diperiksa oleh Magento untuk kode toko / situs web dan ID.

Adapun pemecahan masalah saya telah melakukan hal berikut: Untuk memastikan tidak ada cache dengan konfigurasi lama di mana tersisa: dikosongkan var / cache, cache flushed, reindexed, reboot server dll, semuanya sia-sia.

Bahkan dengan semua php / magento masuk, mode pengembang dll, saya tidak mendapatkan petunjuk mengapa ini terjadi. Tidak ada pengecualian yang dicatat.

Jadi dua pertanyaannya adalah: Mengapa Magento mencoba memilih ruang lingkup tampilan toko yang tidak ada alih-alih ruang lingkup situs web dan bagaimana cara memperbaikinya?

Perbarui 1 / Penanganan Masalah

Setelah seharian mengatasi masalah, termasuk tetapi tidak terbatas pada alat perbaikan magento-db, membuat kembali core_store, core_store_group dan tabel core_website, dengan semua situs web asli dan tampilan toko akhirnya saya perhatikan hal berikut:

Untuk semua website_iditu memuat baik ada store_iddengan nomor yang sama. website_id 1dan 4memuat seperti yang diharapkan, dan memang ada (tidak terkait) store_id 1dan 4didefinisikan.

Untuk website_id 3, 6, 7, 8dan 9tidak ada store_iddengan jumlah yang sama.

Namun, begitu saya membuat entri palsu ke store_id, misalnya 3, memuat Lingkup Konfigurasi website_id 3mulai bekerja kembali.

Jadi, sementara saya sekarang telah berhasil menyelesaikannya, saya akhirnya memiliki satu situs web (dinonaktifkan) tambahan dan 5 tampilan toko (dinonaktifkan) ....

Untuk memastikan ini bukan masalah sebelumnya, saya pergi ke salah satu salinan lama dari situs kami yang saya simpan di server dev saya (magento versi 1.9.1.0).

Di sini semuanya bekerja dengan sempurna, yaitu website_id 6memuat tanpa perlu store_id 6dalam core_storetabel.

Ottonet
sumber
Saya harus bertanya, apakah Anda menjalankan pengindeksan URL ketika Anda mengubah segalanya?
Anthony Cicchelli
Hai @AnthonyCicchelli, terima kasih sudah bertanya. Ini sebenarnya adalah salah satu hal pertama yang saya coba selesaikan masalah ini, tetapi tidak berhasil :(
Ottonet
Sulit untuk mengetahui dari sini karena ada banyak faktor, sudahkah Anda menghapus semua URL Anda dari DB dan menjalankan kembali URL-nya. Kedengarannya tertaut berdasarkan saya. SANGAT Hati-hati bekerja langsung dengan DB seperti itu di atas. Pastikan Anda memiliki cadangan jika tidak bisa merusak segalanya.
Anthony Cicchelli
Saya cukup yakin ini bukan masalah "frontend" (misalnya URL-indeks), tetapi lebih merupakan masalah "backend", di suatu tempat jauh di dalam kode magento. Bagi saya rasanya seperti Magento mengharapkan urutan / kombinasi tertentu dari website_id / store_id, di mana jika Anda menghapus beberapa id "di tengah", magento tidak dapat mencocokkan dan memuat situs web_id itu.
Ottonet

Jawaban:

2

Saya memiliki masalah serupa di toko situs web tunggal, dan diselesaikan dengan pertanyaan berikut.

SET SQL_SAFE_UPDATES=0;
SET FOREIGN_KEY_CHECKS=0;
UPDATE `core_store` SET store_id = 0 WHERE code='admin';
UPDATE `core_store_group` SET group_id = 0 WHERE name='Default';
UPDATE `core_website` SET website_id = 0 WHERE code='admin';
UPDATE `customer_group` SET customer_group_id = 0 WHERE customer_group_code='NOT LOGGED IN';
SET FOREIGN_KEY_CHECKS=1;
SET SQL_SAFE_UPDATES=1;
Ricardo Martins
sumber