Xóa /index.php khỏi URL Magento sẽ gây ra lỗi 404


26

Tôi đang sử dụng Magento ver. 1.7.0.2.

Đây là liên kết đến trang web của tôi: http://dev.blokeundees.com.au/

Tôi phải xóa /index.phpthư mục khỏi URL để tôi chỉnh sửa .htaccesstệp và phụ trợ (bảo mật, máy chủ web viết lại) và /index.phpđã được xóa đúng cách.

Nhưng khi truy cập vào frontend, nó sẽ trả về lỗi 404 (Không tìm thấy trang) cho mọi trang trừ trang chỉ mục.

Tôi không biết tại sao điều này lại xảy ra.


Khi @ sander-mangel giải thích, hãy kiểm tra, htaccesstôi sẽ thêm cung cấp cho chúng tôi nội dung htaccess của bạn để biết ý kiến ​​có gì sai
Sylvain Rayé

1
Bạn đã quản lý để giải quyết vấn đề?
Sander Mangel

Câu trả lời:


27

Cách xóa index.php khỏi URL Magento

Magento là một nền tảng tuyệt vời để bán hàng trực tuyến, được cho là tốt nhất, nhưng có một điều luôn khiến tôi nản lòng khi trở thành một thư mục SEO.php trong thư mục TẤT CẢ các trang nội bộ - cơn ác mộng!

Không có lợi cho họ.

Chúng tệ cho SEO, xấu về cấu trúc và tính nhất quán của trang web, và sau đó chúng thậm chí còn tệ hơn đối với một người thích URL sạch như tôi. Họ không đủ gợi cảm. Hãy dọn dẹp mọi thứ.

URL Magento thân thiện với SEO trong hai bước

May mắn thay, trong khi tôi đang làm một cửa hàng Magento cho một khách hàng gần đây, tôi đã đào một ít và tìm thấy một giải pháp khá đơn giản cho vấn đề này. Nó liên quan đến một vài thay đổi đối với cài đặt quản trị viên Magento và bổ sung hoặc sửa đổi tệp .htaccess đơn giản để loại bỏ việc viết lại các URL lưu trữ tiêu chuẩn của họ.

Thực hiện theo các bước đơn giản dưới đây và bạn sẽ tiến một bước gần hơn đến thành công SEO với cửa hàng Magento của riêng bạn và SEO của bạn sẽ không có lý do gì để giảm mức độ liên quan.

1) Hãy thay đổi cài đặt, Quản trị viên

Điều đầu tiên bạn cần làm là đăng nhập vào bảng quản trị Magento (index.php / admin) để thay đổi cài đặt rất đơn giản sẽ cho Magento biết rằng bạn có ý định sử dụng URL viết lại trong cửa hàng của mình thay vì mặc định xấu xí của họ URL.

Đăng nhập và thay đổi cài đặt này:

Đi đến Hệ thống> Cấu hình> Web> Tối ưu hóa Công cụ Tìm kiếm

Sử dụng phần mềm Web Server Rewrites: CÓ

Điều đó thật dễ dàng phải không? Được rồi, bây giờ cho bước cuối cùng.

2) Hãy sử dụng tệp .htaccess để ghi lại URL

Bước cuối cùng liên quan đến việc tạo tệp .htaccess trong thư mục cài đặt Magento để khen ngợi các cài đặt bạn đã thay đổi trong cài đặt quản trị viên trước đó và điều này thực sự sẽ viết lại URL. Chọn phiên bản .htaccess áp dụng bên dưới.

Nếu cửa hàng Magento của bạn được cài đặt trong root (public_html), hãy sử dụng:

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

Nếu cửa hàng Magento của bạn được cài đặt trong thư mục con (public_html / shop), hãy sử dụng:

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

Bạn đã hoàn thành - hy vọng điều đó sẽ giúp!

Nó chắc chắn sẽ ngăn SEO của bạn nhổ tóc của anh ấy hoặc cô ấy.

Hãy cho tôi biết trong các ý kiến ​​dưới đây nếu bạn sử dụng điều này hoặc gặp phải bất kỳ vấn đề nào!


2
Điều này không hoạt động trong phiên bản Magento của tôi, 1.9.x. Nó xóa index.phpurl, nhưng kết quả là 404 trái và phải.
Nhà phát triển mùa hè

10

Hãy chắc chắn rằng bạn có một .htaccesstệp đang hoạt động , tùy ý bạn có thể lấy nó từ bản tải xuống phiên bản Magento mới.

Ngoài ra kiểm tra nếu mod_rewriteđược kích hoạt trên máy chủ của bạn. Điều đó có thể được thực hiện bằng cách đọc phpinfo();từ một tập lệnh trên máy chủ của bạn. Bài viết Stackoverflow này cho bạn biết làm thế nào.


Ngoài ra, bạn cần chắc chắn rằng Hệ thống -> Cấu hình -> Web -> Cấu hình công cụ tìm kiếm -> Sử dụng phần mềm máy chủ Web được bật.
Barbanet

Làm việc & ghi .htaccess tập tin.
Raptor

6

Để xóa index.phpkhỏi URL, hãy làm theo các bước dưới đây:

  1. Đăng nhập Magento Admin
  2. Đi đến System -> Configuration -> Web
  3. Từ tab Tối ưu hóa Công cụ Tìm kiếm Sử dụng Viết lại Máy chủ Web chọn .
  4. Hãy chắc chắn rằng các url cơ sở an toànkhông an toàn của bạn sẽ kết thúc bằng trò chơi / / .
  5. Bây giờ hãy chỉnh sửa .htaccess(sẽ nằm trong thư mục gốc magento) và dán mã được đưa ra tại liên kết này

5

Bạn không cần phải thay đổi ngoài những điểm sau. Chỉ cần thực hiện hai cài đặt này và bạn sẽ ổn thôi. trong Hệ thống -> Cấu hình -> Web -> Tối ưu hóa công cụ tìm kiếm, chọn CÓ.

Và trong Hệ thống -> Cấu hình -> Web -> Bảo mật -> Sử dụng URL bảo mật ở lối vào, chọn CÓ. Làm mới bộ đệm của bạn nếu vẫn gặp phải sự cố, hãy làm theo tệp httpd.config. AllowOverride Không có thay đổi nào đối với AllowOverride Tất cả sẽ ổn ngay bây giờ


Trong httpd.config của tôi, không có dòng nào như, AllowOverride Không ,. sau đó, làm thế nào tôi có thể thay đổi AllowOverride All
zus

3

Hầu hết, khi chúng tôi làm việc trong WAMP / XAMPP, chúng tôi cần:

1) để kiểm tra Rewrite_module đã được bật

ví dụ: khi chúng tôi cài đặt wampp trong C: \ wamp, chúng tôi có thể tìm thấy httpd.conf trong C: \ wamp \ bin \ apache \ apache2.4.9 \ conf và kích hoạt nó bằng cách xóa dấu #

LoadModule rewrite_module modules/mod_rewrite.so

2) để bật RewriteBase

ví dụ: khi chúng tôi cài đặt magento v1.9 trong C: \ wamp \ www \ magento, chúng tôi cần chỉnh sửa .htaccess mặc định trong thư mục gốc magento

RewriteBase /magento/

Ngoài ra, chúng ta cần kích hoạt quy tắc viết lại mặc định bằng cách xóa dấu #

RewriteRule .* index.php [L]

3) trong Hệ thống -> Cấu hình -> Web -> Tối ưu hóa công cụ tìm kiếm, chọn CÓ.

Và trong Hệ thống -> Cấu hình -> Web -> Bảo mật -> Sử dụng URL bảo mật ở lối vào, chọn CÓ.

Khi chúng tôi làm việc trong máy chủ LAMP, tương tự như chúng tôi cần kiểm tra tất cả các mục trên để cho phép mô-đun viết lại hoạt động, nghĩ rằng có nhiều sự khác biệt chi tiết.


3

Giải pháp hoạt động để xóa index.php khỏi URL trừ Admin. Và nếu có ai đặt index.php trong URL, nó sẽ chuyển hướng đến URL không chứa index.php. Đối với điều này, chúng tôi cũng cần phải thiết lập, Sử dụng phần thưởng máy chủ web - Có từ Tối ưu hóa công cụ tìm kiếm

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

3

Trước tiên, hãy truy cập hệ thống-> cấu hình-> web-> Tối ưu hóa công cụ tìm kiếm

Và chọn trong danh sách Sử dụng Máy chủ Web Viết lại

Bây giờ hãy vào trang web của bạn

Mở tệp .htaccess nếu không thì tạo tệp .htaccess

tại địa phương, tệp này bị ẩn nên bạn cần hiển thị các tệp bị ẩn (ctrl + H)

Bây giờ nếu root của bạn trong public_html / thì sao chép mã này vào .htaccess

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

Nếu Trang web của bạn nằm trong thư mục con public_html / yoursite Sao chép mã này trong .htaccess

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

Sau khi cập nhật ý tưởng của bạn, vẫn không làm việc cho tôi, u có thể pls help me @ magento.stackexchange.com/q/220973/57334
zus

2

Đảm bảo mod_rewrite được bật trên máy chủ của bạn. Trong trường hợp của tôi, nó đã bị vô hiệu hóa. Khi tôi kích hoạt nó trong máy chủ, nó hoạt động bình thường.


Làm cách nào tôi có thể tự kiểm tra xem mod_rewrite có bật hay không trong máy chủ của mình,
zus

2
  1. Goto thư mục gốc trang web của bạn và bạn có thể tìm thấy tệp .htaccess. Chỉ cần chỉnh sửa nó. Mở nó trên một trình soạn thảo văn bản và tìm dòng này,

Viết lại cơ sở / magento /.

Just replace it with

Viết lại cơ sở /. Đặt mã sau vào .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>

Trong trường hợp Magento của bạn được cài đặt trong thư mục con, ví dụ: 'shop', bạn nên sử dụng mã sau:

<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. Sau đó, chọn Bảng quản trị của bạn và kích hoạt Phần mềm máy chủ Web. Bạn có thể tìm thấy nó tại Hệ thống> Cấu hình> Web> Tối ưu hóa Công cụ Tìm kiếm.

Bây giờ thiết lập các “Sử dụng Web Server ghi đè” tùy chọn trong phần “Search Engines Optiomization” để “Có”.

  1. Sau đó, hãy đặt tùy chọn Sử dụng URL an toàn trong Frontend trực tuyến trong phần dưới dạng Secure Secure thành Chế độ Có. Nhấp vào nút Save Save Cấu hình nút ở trên cùng bên phải:

  2. Sau đó, xem trang Quản lý bộ đệm (Hệ thống> Quản lý bộ đệm) và làm mới Bộ đệm của bạn và cũng làm mới Chuyển hướng web.


2

Tôi chỉ phải thay đổi văn bản sau trong tệp .htaccess tại thư mục gốc của dự án magento:

#RewriteBase /magento/

đến

RewriteBase /magento/

Lưu ý: chỉ cần thay đổi magento với tên trang web của bạn.


2

Xóa index.php khỏi URL bao gồm các trang bên trong vào Magento bằng các bước sau:

Kiểm tra bảng quản trị: Sử dụng phần mềm Web Server Rewrites 'nên được đặt thành' Có 'trong Web> Tối ưu hóa công cụ tìm kiếm và sau đó làm theo 2 bước dưới đây.

Bước 1: --------------- Chèn mã này lên trên tất cả các tệp bố cục (1 màu và tất cả các tệp khác) --------------

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

--------------------------------- KẾT THÚC Bước 1 -------------- -------------------------

Bước 2: --------------- Chèn mã này trước khi 'Viết lại engion ON' vào tệp htaccess --------------

index.php trên miền mặc định

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

Chuyển hướng HTTP sang 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]

----------------------------------- KẾT THÚC Bước 2 ------------ -------------------------------------

Lưu ý: Trong bước 2, chỉ cần thay đổi URL cho trang web của bạn. Không cần làm gì trong bước 1.


1

Nếu bất cứ ai sử dụng Apache2 ubfox 16.04 , bạn không thấy tệp httpd.conf ở bất cứ đâu trong máy chủ, vì vậy bạn cần đi đến đường dẫn: / etc / apache2 / apache2.conf , thay vì mã bên dưới

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

với mã dưới đây:

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

Sau đó, khởi động lại máy chủ: sudo service apache2 restart


0
  • Chuyển đến Hệ thống> Cấu hình> Web> Tối ưu hóa công cụ tìm kiếm> Sử dụng phần mềm máy chủ Web chọn CÓ.
  • sudo a2enmod viết lại
  • dịch vụ apache2 khởi động lại

3 người này làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.