ลบ /index.php จาก Magento URL มีข้อผิดพลาด 404


26

ฉันใช้ Magento ver 1.7.0.2

นี่คือลิงค์ไปยังเว็บไซต์ของฉัน: http://dev.blokeundees.com.au/

ฉันต้องลบ/index.phpโฟลเดอร์ออกจาก URL ดังนั้นฉันจึงแก้ไข.htaccessไฟล์และแบ็กเอนด์ด้วย (ปลอดภัยเขียนเว็บเซิร์ฟเวอร์) และ/index.phpลบออกอย่างถูกต้อง

แต่เมื่อเข้าถึงส่วนหน้าก็จะส่งกลับข้อผิดพลาด 404 (ไม่พบหน้า) สำหรับทุกหน้ายกเว้นหน้าดัชนี

ฉันไม่รู้ว่าทำไมสิ่งนี้จึงเกิดขึ้น


ตามที่ @ sander-mangel อธิบายให้ตรวจสอบของคุณhtaccessฉันจะเพิ่มให้เนื้อหา htaccess ของคุณเพื่อให้เราทราบว่ามีอะไรผิดปกติ
Sylvain Rayé

1
คุณจัดการเพื่อแก้ไขปัญหาหรือไม่
Sander Mangel

คำตอบ:


27

วิธีการลบ index.php จาก URL ของ Magento

Magento เป็นแพลตฟอร์มที่ยอดเยี่ยมสำหรับการขายออนไลน์เนื้อหาที่ดีที่สุด แต่มีสิ่งหนึ่งที่ทำให้ฉันผิดหวังเสมอในฐานะ SEO ... นั่นไดเรกทอรี index.php ที่น่ารำคาญใน URL ของหน้าภายในทั้งหมด - ฝันร้าย!

ไม่มีประโยชน์อะไรกับพวกเขา

พวกเขาไม่ดีต่อ SEO ไม่ดีต่อโครงสร้างของเว็บไซต์และความมั่นคงและยิ่งแย่กว่านั้นสำหรับ URL ที่สะอาดอย่างฉัน พวกเขาไม่เซ็กซี่พอ มาทำความสะอาดกันเถอะ

URL วีโอไอพีที่เป็นมิตรกับ SEO ในสองขั้นตอน

โชคดีที่ในขณะที่ฉันกำลังทำ Magento store สำหรับลูกค้าเมื่อเร็ว ๆ นี้ฉันทำการขุดนิดหน่อยและพบวิธีแก้ไขปัญหาที่ตรงไปตรงมา มันเกี่ยวข้องกับการเปลี่ยนแปลงสองอย่างในการตั้งค่าผู้ดูแลระบบ Magento และการเพิ่มหรือแก้ไขไฟล์. htaccess อย่างง่ายเพื่อคัดออกจากการเขียน URL ร้านค้ามาตรฐานของพวกเขาอีกครั้ง

ทำตามขั้นตอนง่าย ๆ ด้านล่างและคุณจะเข้าใกล้ความสำเร็จของ SEO กับร้านค้า Magento ของคุณและ SEO ของคุณจะไม่มีข้อแก้ตัวสำหรับความเกี่ยวข้องที่ลดลง

1) ลองเปลี่ยนการตั้งค่าผู้ดูแลระบบ

สิ่งแรกที่คุณต้องทำคือลงชื่อเข้าใช้แผงผู้ดูแลระบบ Magento ของคุณ (index.php / admin) เพื่อเปลี่ยนการตั้งค่าที่ง่ายมากซึ่งจะทำให้ Magento รู้ว่าคุณตั้งใจจะใช้การเขียน URL ซ้ำทั่วทั้งร้านแทนที่จะเป็นค่าเริ่มต้นที่น่าเกลียด URL ที่

เข้าสู่ระบบและเปลี่ยนการตั้งค่านี้:

ไปที่ระบบ> การกำหนดค่า> เว็บ> การเพิ่มประสิทธิภาพกลไกค้นหา

ใช้การเขียนเว็บเซิร์ฟเวอร์ใหม่: ใช่

นั่นเป็นเรื่องง่ายใช่มั้ย ตกลงตอนนี้สำหรับขั้นตอนสุดท้าย

2) ลองใช้ไฟล์. htaccess เพื่อเขียนซ้ำ URL

ขั้นตอนสุดท้ายเกี่ยวข้องกับการสร้างไฟล์. htaccess ในโฟลเดอร์การติดตั้ง Magento เพื่อชมเชยการตั้งค่าที่คุณเปลี่ยนแปลงภายในการตั้งค่าผู้ดูแลระบบของคุณก่อนหน้านี้และสิ่งนี้จะเขียน URL จริง ๆ เลือกรุ่น. htaccess ที่ใช้งานได้ด้านล่าง

หากร้านค้า Magento ของคุณติดตั้งในรูท (public_html) ให้ใช้สิ่งนี้:

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

หากร้านค้า Magento ของคุณติดตั้งในโฟลเดอร์ย่อย (public_html / shop) ให้ใช้สิ่งนี้:

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

เสร็จแล้ว - หวังว่าจะช่วยได้!

แน่นอนจะหยุด SEO ของคุณจากการดึงผมของเขาออกมา

แจ้งให้เราทราบในความคิดเห็นด้านล่างหากคุณใช้สิ่งนี้หรือพบปัญหาใด ๆ !


2
สิ่งนี้ใช้ไม่ได้กับ Magento รุ่น 1.9.x ของฉัน มันลบออกindex.phpจาก URL แต่ผลลัพธ์ใน 404 ซ้ายและขวา
นักพัฒนาฤดูร้อน

10

ตรวจสอบให้แน่ใจว่าคุณมี.htaccessไฟล์ที่ใช้งานได้คุณสามารถเลือกได้จากการดาวน์โหลด Magento เวอร์ชันใหม่

ตรวจสอบด้วยว่าmod_rewriteเปิดใช้งานบนเซิร์ฟเวอร์ของคุณหรือไม่ สามารถทำได้โดยการอ่านphpinfo();จากสคริปต์บนเซิร์ฟเวอร์ของคุณ โพสต์ Stackoverflowนี้จะบอกคุณว่าอย่างไร


นอกจากนี้คุณต้องแน่ใจว่าระบบ -> การกำหนดค่า -> เว็บ -> การกำหนดค่าเครื่องมือค้นหา -> ใช้การเขียนซ้ำเว็บเซิร์ฟเวอร์เปิดใช้งาน
Barbanet

ไฟล์ทำงานและเขียนได้ .htaccess
Raptor

6

หากต้องการลบออกindex.phpจาก URL ให้ทำตามขั้นตอนด้านล่าง:

  1. เข้าสู่ระบบ Magento Admin
  2. ไปที่ System -> Configuration -> Web
  3. จากSearch Engine Optimizationแท็บการใช้งาน Web Server เขียนซ้ำเลือกYES
  4. ให้แน่ใจว่าคุณปลอดภัยและUnsecureฐาน URL ที่ควรจะจบลงด้วยการ“/”
  5. ตอนนี้แก้ไขของคุณ.htaccess(จะอยู่ในโฟลเดอร์ root ของวีโอไอพี) และวางรหัสที่ได้รับจากลิงค์นี้

5

คุณไม่จำเป็นต้องเปลี่ยนนอกเหนือจากจุดต่อไปนี้ เพียงแค่ตั้งค่าสองอย่างนี้แล้วคุณจะโอเค ในระบบ -> การกำหนดค่า -> เว็บ -> การปรับแต่งเครื่องมือค้นหาให้เลือกใช่

และในระบบ -> การกำหนดค่า -> เว็บ -> ความปลอดภัย -> ใช้ URL ที่ปลอดภัยในส่วนหน้าให้เลือกใช่ รีเฟรชแคชของคุณหากยังคงประสบปัญหาทำตามในไฟล์ httpd.config ของคุณ AllowOverride None เปลี่ยนเป็น AllowOverride All All ทั้งหมดจะตกลงตอนนี้


ใน httpd.config ของฉันไม่มีบรรทัดเหมือน AllowOverride None, จากนั้นฉันจะเปลี่ยน
AllowOverride

3

ส่วนใหญ่เมื่อเราทำงานใน WAMP / XAMPP เราต้องการ:

1) เพื่อตรวจสอบ rewrite_module ถูกเปิดใช้งาน

ตัวอย่างเช่นเมื่อเราติดตั้ง wampp ใน C: \ wamp เราสามารถค้นหา httpd.conf ใน C: \ wamp \ bin \ apache \ apache2.4.9 \ conf และเปิดใช้งานได้โดยลบ # sign เป็น

LoadModule rewrite_module modules/mod_rewrite.so

2) เพื่อเปิดใช้งาน RewriteBase

ตัวอย่างเช่นเมื่อเราติดตั้ง magento v1.9 ใน C: \ wamp \ www \ magento เราต้องแก้ไขค่าเริ่มต้น. htaccess ในโฟลเดอร์ root ของ magento

RewriteBase /magento/

และเราต้องเปิดใช้งานกฎการเขียนซ้ำเริ่มต้นโดยลบ # sign

RewriteRule .* index.php [L]

3) ในระบบ -> การกำหนดค่า -> เว็บ -> การปรับแต่งเครื่องมือค้นหาให้เลือกใช่

และในระบบ -> การกำหนดค่า -> เว็บ -> ความปลอดภัย -> ใช้ URL ที่ปลอดภัยในส่วนหน้าให้เลือกใช่

เมื่อเราทำงานในเซิร์ฟเวอร์ LAMP มันคล้ายกับที่เราต้องตรวจสอบรายการทั้งหมดข้างต้นเพื่อเปิดใช้งานโมดูลการเขียนใหม่ให้ทำงานคิดว่าควรมีความแตกต่างของรายละเอียดมากมาย


3

วิธีแก้ปัญหาในการลบ index.php จาก URL ไม่รวม Admin.A และถ้าใครวาง index.php ใน URL มันจะเปลี่ยนเส้นทางไปยัง URL ที่ไม่มี index.php สำหรับสิ่งนี้เราต้องตั้งค่าใช้การเขียนเว็บเซิร์ฟเวอร์ - ใช่จากการเพิ่มประสิทธิภาพเครื่องมือค้นหา

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

3

ก่อนอื่นให้ไปที่ system-> configuration-> web-> Search Engines Optimization

และเลือกใช่ในรายการดรอปดาวน์ Use Web Rewrites ใช้

ตอนนี้ไปที่รูทไซต์ของคุณ

เปิดไฟล์. htaccessหากไม่สร้างไฟล์. htaccess

ในเครื่องไฟล์นี้ถูกซ่อนอยู่ดังนั้นคุณต้องแสดงไฟล์ที่ซ่อนอยู่ (ctrl + H)

ตอนนี้ถ้ารูทของคุณใน public_html / ให้คัดลอกโค้ดนี้ไปยัง. htaccess

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

หากไซต์ของคุณอยู่ในโฟลเดอร์ย่อย public_html / yoursite คัดลอกโค้ดนี้ใน. htaccess

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

หลังจากการปรับปรุงความคิดของคุณยังคงไม่ทำงานผมจะทำได้ U pls ช่วยเหลือฉัน @ magento.stackexchange.com/q/220973/57334
ZUS

2

ตรวจสอบให้แน่ใจว่า mod_rewrite เปิดใช้งานบนเซิร์ฟเวอร์ของคุณ ในกรณีของฉันมันถูกปิดใช้งาน เมื่อฉันเปิดใช้งานในเซิร์ฟเวอร์จะทำงานได้อย่างถูกต้อง


ฉันจะตรวจสอบตัวเองถ้า mod_rewrite เปิดใช้งานหรือไม่ได้อยู่ในเซิร์ฟเวอร์ของฉัน
ZUS

2
  1. ไปที่โฟลเดอร์รูทของไซต์และคุณสามารถค้นหาไฟล์. htaccess เพียงแค่แก้ไข เปิดบนตัวแก้ไขข้อความและค้นหาบรรทัดนี้

เขียนซ้ำฐาน / magento /

Just replace it with

เขียนซ้ำฐาน /. ใส่รหัสต่อไปนี้ใน. 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>

ในกรณีที่ติดตั้ง Magento ของคุณในโฟลเดอร์ย่อยเช่น 'shop' คุณควรใช้รหัสต่อไปนี้:

<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. จากนั้นไปที่พาเนลผู้ดูแลระบบของคุณและเปิดใช้งานการเขียนซ้ำเว็บเซิร์ฟเวอร์ คุณสามารถค้นหาได้ที่ระบบ> การกำหนดค่า> เว็บ> การเพิ่มประสิทธิภาพกลไกค้นหา

ตอนนี้ตั้งค่าตัวเลือก“ ใช้การเขียนเว็บเซิร์ฟเวอร์ใหม่”ภายใต้“ Optiomization เครื่องมือค้นหา”เป็น“ ใช่”

  1. จากนั้นตั้งค่าตัวเลือก“ ใช้ URL ที่ปลอดภัยในส่วนหน้า”ภายใต้“ ปลอดภัย” เป็น“ ใช่” คลิกปุ่ม"บันทึกการกำหนดค่า"ที่ด้านบนขวา:

  2. จากนั้นไปที่หน้าการจัดการแคชของคุณ (ระบบ> การจัดการแคช) และรีเฟรชแคชของคุณและรีเฟรชการเปลี่ยนเส้นทางของเว็บ


2

ฉันต้องเปลี่ยนข้อความต่อไปนี้ในไฟล์. htaccess ที่รูทของโครงการวีโอไอพี:

#RewriteBase /magento/

ไปยัง

RewriteBase /magento/

หมายเหตุ: เพียงเปลี่ยนวีโอไอพีด้วยชื่อเว็บไซต์ของคุณ


2

ลบ index.php จาก URL รวมถึงหน้าภายในลงใน Magento โดยใช้ขั้นตอนต่อไปนี้:

ทำเครื่องหมายที่แผงการดูแลระบบ: ใช้การตั้งค่าการเขียนเว็บเซิร์ฟเวอร์ใหม่ควรตั้งค่าเป็น 'ใช่' ในเว็บ> การเพิ่มประสิทธิภาพกลไกค้นหาแล้วทำตามขั้นตอนด้านล่าง 2 ขั้นตอน

ขั้นตอนที่ 1: --------------- ใส่รหัสนี้ที่ด้านบนของไฟล์เลย์เอาต์ทั้งหมด (1 คอลัมน์และอื่น ๆ ทั้งหมด) --------------

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

--------------------------------- สิ้นสุดขั้นตอนที่ 1 -------------- -------------------------

ขั้นตอนที่ 2: --------------- ใส่รหัสนี้ก่อน 'เขียนซ้ำ ON' ลงในไฟล์ htaccess --------------

index.php ในโดเมนเริ่มต้น

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

การเปลี่ยนเส้นทาง HTTP เป็น 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]

----------------------------------- สิ้นสุดขั้นตอนที่ 2 ------------ -------------------------------------

หมายเหตุ: ในขั้นตอนที่ 2 เพียงเปลี่ยน URL สำหรับเว็บไซต์ของคุณ ไม่จำเป็นต้องทำอะไรในขั้นตอนที่ 1


1

หากใครก็ตามที่ใช้ Apache2 ubuntu 16.04คุณไม่เห็นไฟล์ httpd.conf ที่ใดก็ได้ในเซิร์ฟเวอร์ดังนั้นคุณต้องไปที่พา ธ : / etc / apache2 / apache2.confแทนรหัสด้านล่าง

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

ด้วยรหัสด้านล่าง:

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

หลังจากนี้ให้รีสตาร์ทเซิร์ฟเวอร์: sudo service apache2 restart


0
  • ไปที่ระบบ> การกำหนดค่า> เว็บ> การเพิ่มประสิทธิภาพกลไกค้นหา> ใช้การเขียนเว็บเซิร์ฟเวอร์ใหม่เลือกใช่
  • sudo a2enmod เขียนใหม่
  • บริการ apache2 รีสตาร์ท

ทั้งสามนี้ใช้ได้สำหรับฉัน

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