Magento 2 ผู้ดูแลหน้าเว็บนี้มีการวนรอบการเปลี่ยนเส้นทาง


26

Magento 2 เพิ่งเปิดตัวเมื่อคืนนี้และฉันก็อดใจรอไม่ไหว ฉันลองติดตั้งโดยใช้ข้อกำหนดเบื้องต้นทั้งหมด

ส่วนหน้าทำงานได้ดี แต่เมื่อฉันพยายามเปิดแบ็กเอนด์มันบอกว่า "หน้าเว็บนี้มีลูปเปลี่ยนเส้นทาง" Magento สร้าง "admin_r2sxkn" เป็น URL ส่วนหลังที่ไม่ซ้ำกัน URL ผู้ดูแลระบบของฉันคือhttp: // localhost / magento2 / admin_r2sxkn

ฉันลองลบแคชที่ไม่ได้ผล

PS ฉันมี xampp บน mac โดยมี PHP และ MySql เวอร์ชันล่าสุดติดตั้งส่วนขยาย PHP ตามที่ต้องการ

ความช่วยเหลือใด ๆ ที่จะได้รับการชื่นชม

ป้อนคำอธิบายรูปภาพที่นี่

คำตอบ:


17

เบราว์เซอร์ไม่รองรับคุกกี้ในโดเมนระดับบนสุดเช่น localhost โปรดติดตั้ง Magento ใหม่โดยใช้ชื่อโฮสต์อื่น (เช่น magento.dev)

นอกจากนี้ Magento รองรับเฉพาะ Linux ควรใช้Vagrantดีกว่าสำหรับการพัฒนา คุณสามารถใช้อินสแตนซ์คนพเนจรที่มีอยู่แล้วซึ่งทำงานได้ดีสำหรับคุณ


Magento รองรับเฉพาะ Linux?
Bhargav Nanekalva

@BhargavNanekalva ใช่แล้วdevdocs.magento.com/guides/v2.2/install-gde/…
KAndy

มันอาจทำงานบนระบบปฏิบัติการที่เหมือน Linux เช่น macOS (หลายคนทำเพื่อการพัฒนาดูตัวอย่างgithub.com/weprovide/valet-plus ) อย่างไรก็ตามยังไม่รองรับอย่างเป็นทางการดังนั้นอาจมีความเข้ากันไม่ได้ที่คาดไม่ถึง
Scott Buchanan

22

ในกรณีของฉันฉันกำลังนำเข้าฐานข้อมูล Magento 2 ที่มีอยู่แล้ว เหตุผลที่ฉันได้รับข้อผิดพลาดเป็นเพราะโดเมนคุกกี้ในฐานข้อมูล core_config_dataไปยังฐานข้อมูลของคุณและดูในตาราง web/cookie/cookie_domainคุณควรจะเห็นเส้นทางที่เรียกว่า ตรวจสอบให้แน่ใจว่าโดเมนนั้นตรงกับโดเมนที่คุณติดตั้ง Magento 2 ไว้ Ex: หากคุณติดตั้งวีโอไอพี 2 local.dev/<magento-root> รายการในที่ควรจะเป็นweb/cookie/cookie_domainlocal.dev


นี่เป็นปัญหาของฉันเช่นกัน ...
Giel Berkers

นั่นคือเหตุผลที่จดหมาย
Amit Bera

1
เลือก * จาก core_config_data โดยที่เส้นทางเช่น "web /%";
david

11

มีปัญหาวงเปลี่ยนเส้นทางใน Magento2 ด้วยชื่อโดเมนที่ถูกต้องหลังจากเปลี่ยนเป็น https

ตรวจสอบweb/secure/use_in_adminhtmlและweb/secure/use_in_frontendการตั้งค่าในพวกเขาทั้งสองควรจะกำหนดให้core_config_data1


ขอบคุณ elene คุณช่วยชีวิตเราสักครั้ง มันใช้งานได้สำหรับฉัน ข้อความค้นหาเพื่อดูค่า:select * from core_config_data where path like 'web/%';
Shahzaib Hayat Khan

นี่คือสิ่งที่ฉันต้องการ นอกจากนี้ถ้ามันสะดวกมากขึ้นในการทำเช่นนี้จากบรรทัดคำสั่งแทนที่จะแก้ไขระเบียนในฐานข้อมูลก็magento config:set web/secure/use_in_adminhtml 1และmagento config:set web/secure/use_in_frontend 1
โคลิน

9

ในขณะที่ติดตั้ง magento2 บน localhost ของคุณลองใช้ 127.0.0.1 ในที่อยู่ร้านค้าของคุณในขั้นตอนที่ 3 แทน localhost ตอนนี้สิ่งที่คุณสามารถทำได้คือการเปลี่ยนตาราง core_config_data ต่อไปนี้ 2 แถว

web/unsecure/base_url to http://127.0.0.1/magento2/
web/secure/base_url to https://127.0.0.1/magento2/

ล้างแคชและตรวจสอบทันที

แก้ไข: -

ในขณะที่ติดตั้งลอง 127.0.0.1 ในที่อยู่ร้านค้าของคุณในขั้นตอนที่ 3 ดังที่แสดงในภาพหน้าจอ

ป้อนคำอธิบายรูปภาพที่นี่


ฉันได้ทำการเปลี่ยนแปลงเดียวกันผู้ดูแลระบบ magento2 ตอนนี้ทำงานกับ firefox แต่ไม่ใช่กับ chrome ฉันยังล้างแคช แต่ไม่มีผลลัพธ์
Dinesh

5

ฉันมีโดเมนของฟอร์ม local.abc_def.com และฉันประสบปัญหานี้

ฉันเปลี่ยนขีดล่างในโดเมนเป็นเครื่องหมายขีดคั่นทำให้โดเมนของ local.abc-def.com และสิ่งนี้แก้ไขปัญหาให้ฉันได้


4

สามารถดีบักใน \ Magento \ Backend \ Controller \ Adminhtml \ Auth \ Login :: execute

ยกตัวอย่างเช่น

    $requestUrl = $this->getRequest()->getUri();
    $backendUrl = $this->getUrl('*');
    // redirect according to rewrite rule
    echo (string)$requestUrl . ' != ' . $backendUrl;
    die();

มันเสียชีวิตแล้วและ URL ก็แตกต่างกันนี่เป็นคำใบ้ถึงปัญหา


ฉันมีปัญหาเกือบจะเหมือนกันกับ OP แต่การตรวจสอบ vars เหล่านี้ทำให้เกิดคำถามเพิ่มเติม - URL สองรายการไม่ตรงกันเนื่องจากคีย์จะแตกต่างกันในแต่ละครั้ง หากฉันพยายามโหลด URL โดยไม่ใช้รหัส ( admin/ตัวอย่างเช่น) จะตรวจสอบว่าเทียบกับ URL ด้วยรหัสและเปลี่ยนเส้นทาง ... ไปยัง URL อื่นด้วยรหัสซึ่งจะตรวจสอบกับ URL ที่มีคีย์อื่นที่แตกต่างกันหรือไม่?
James

ถูกต้องดูเหมือนจะเป็นข้อผิดพลาด / การกำหนดค่าผิดพลาดโดยใช้ URL ผู้ดูแลระบบที่กำหนดเอง - รีเซ็ตสิ่งนี้เป็น 'ผู้ดูแลระบบ' ใน env.php เพื่อแก้ไขปัญหา!
James

2

ลองล้างโฟลเดอร์ var / cache มันช่วยฉัน


สิ่งนี้ช่วยให้ฉันเป็นชีวิตที่ผ่านมาลอง .. ขอบคุณ @karick
Ask Bytes

0

ฉันมีทางออกที่ดีกว่าในการแก้ไขปัญหาข้างต้น

เปิดไฟล์. htaccess

ค้นหาบรรทัด

 #RewriteBase / magento /

ตามปัญหาของคุณ Uncomment บรรทัดเป็น

  RewriteBase / magento2 /  

หมายเหตุ -: บันทึกไฟล์. htaccess ล้าง var / cache และแคชเบราว์เซอร์ทั้งหมด



0

ใช้localhostเป็นโดเมนระดับบนสุดที่แท้จริงแทนที่จะเป็นแบบสแตนด์อโลนและคุณควรจะสามารถจัดการสิ่งนี้ได้ การใช้.devไม่ใช่ความคิดที่ดีตามที่อธิบายไว้ในบทความนี้: https://iyware.com/dont-use-dev-for-development/

http://magento.localhost/จะเหมาะสมหรือถ้าคุณมีบางอย่างDOMAIN.comที่จะนำไปใช้ในภายหลังคุณสามารถทำDOMAIN.localhostสิ่งต่อไปที่จะจบลงที่ DOMAIN.com แล้วคุณสามารถโค้ดเว็บเซิร์ฟเวอร์ของคุณเพื่อค้นหาชื่อโฮสต์โดยไม่คำนึงถึง TLD ที่คุณใช้

เช่นถ้าคุณมีร้านค้าสองแห่งที่ DOMAIN1.com และ DOMAIN2.com ให้ป้อนกฎของคุณใน nginx conf (หรือเว็บเซิร์ฟเวอร์ที่คุณเลือก) DOMAIN1.*เพื่อใช้ในการประเมินโค้ดเฉพาะ DOMAIN1 Apache คุณอาจใช้สิ่งที่ต้องการSetEnvIf Host DOMAIN1\.(localhost|com)$ VAR=valใน.htaccessไฟล์ของคุณ


0

ในบางสถานการณ์การลบคุกกี้เฉพาะสำหรับการติดตั้ง Magento2 และการล้างไฟล์แคช Magento ในvar/cacheจะช่วยแก้ไขปัญหานี้ได้


0

คุณควรลบ var / cache / * และเรียกใช้การตั้งค่า: คำสั่งคงที่เนื้อหา: ปรับใช้ มันควรจะทำงาน ฉันแก้ไขปัญหานี้บน localhost ของฉันด้วยขั้นตอนข้างต้น


0

หลังจากเปลี่ยน http เป็น https จำเป็นต้องอัปเดตค่าต่อไปนี้ในตาราง core_config_data

UPDATE core_config_data SET value = REPLACE(value, '0', '1') WHERE path = 'web/secure/use_in_frontend';

UPDATE core_config_data SET value = REPLACE(value, '0', '1') WHERE path = 'web/secure/use_in_adminhtml';

จากนั้นล้างแคชและรีโหลด URL ผู้ดูแลระบบ


0

ฉันใช้เวลา 8 ชั่วโมงกับหัวข้อนี่คือข้อสรุปของฉัน

1) ตั้งค่าAllowOverride ทั้งหมดที่การกำหนดค่าไดเรกทอรี apache อย่างน้อยจะได้รับไฟล์. htaccess ที่จะอ่านในโฟลเดอร์ magento เป็นวิธีการแก้ปัญหาสากลสำหรับการรับส่วนหน้า && backoffice

2) ตั้งค่าRewriteBase / เป็น . htaccess หรือโฟลเดอร์ย่อยถ้า localhost / magento

3) ตรวจสอบให้แน่ใจว่าใช้ https สำหรับเส้นทางผู้ดูแลระบบในกรณีที่คำขอเหล่านั้นอาจมีประโยชน์ (มิฉะนั้นคุกกี้ผู้ดูแลระบบจะไม่ตั้งค่าเลย):

d = magento.yourdomain.localhost ;

mysql -ua -pb -e "อัพเดท magento.core_config_data ค่า SET = ' https : // $ d /' เส้นทางที่อยู่ใน ('เว็บ / การรักษาความปลอดภัย / base_url')";

mysql -ua -pb -e "อัพเดท magento.core_config_data ค่า SET = 1 ตำแหน่งพา ธ ใน (' เว็บ / ความปลอดภัย / use_in_adminhtml ')

php bin / magento cache: flush

4) นั่นคือทั้งหมดฉันได้ลบการเดาผิดทั้งหมดออกจากโพสต์นี้เนื่องจากพวกเขาดูได้อย่างรวดเร็วในครั้งแรก ..



0

สิ่งที่ต้องระวังอีกประการคือเว็บเอ็นจิ้นเซิร์ฟเวอร์ (nginx / apache) ของคุณฟังพอร์ต SSL 443 และคุณได้กำหนดค่าใบรับรองไว้ นี่เป็นปัญหาสำหรับฉันพร้อมคำแนะนำที่ระบุไว้แล้วในคำตอบอื่น ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.