404 mã HTTP trong Joomla


7

Làm thế nào để bạn làm cho Joomla trả về mã 404 "thực"? Tôi không thể tìm ra làm thế nào để thực hiện điều này! Tôi đã thay đổi htaccess.txtđến .htaccess, kích hoạt hệ thống / chuyển hướng plugin, và bật URL viết lại trong các cài đặt global Joomla.

Tuy nhiên, bất kỳ URL giả nào tôi nhập chỉ đơn giản là chuyển hướng đến trang chủ, thậm chí không đến trang lỗi Joomla mặc định.

Điều này cũng xảy ra ngay cả trên trang web demo Joomla tại đây: https : //demo.j Joomla.org/badurl_fake

Kiểm tra thêm:

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Điều này dẫn đến một URL xấu trả về lỗi 404 thực

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: NO

Điều này dẫn đến một URL xấu trả về lỗi 404 thực

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: NO
Joomla redirect plugin enabled: YES

Điều này dẫn đến một URL xấu trả về lỗi 404 thực

Joomla Global Use Rewrite: ON
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Điều này dẫn đến một URL xấu đưa người dùng trở lại trang chủ

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: YES

Điều này dẫn đến một URL xấu đưa người dùng trở lại trang chủ

Joomla Global Use Rewrite: OFF
Joomla htaccess.txt renamed: YES
Joomla redirect plugin enabled: NO

Điều này dẫn đến một URL xấu đưa người dùng trở lại trang chủ

Vì vậy, dường như với tôi rằng htaccess là thủ phạm ở đây. Trong thử nghiệm của tôi, bất cứ khi nào .htacess có mặt, 404 được chuyển hướng đến trang chỉ mục.


Bạn đã thực hiện bất kỳ thay đổi cho tập tin .htaccess của bạn? Hoặc nó là tập tin mặc định đi kèm với Joomla?
johanpw

Không. Mặc định chạy thẳng trên ngăn xếp đèn Ubuntu.
101289

@ user101289 Thành phần nào bạn đang sử dụng cho mục menu trang chủ của mình? Com_content hay cái gì khác?
David Fritsch

Câu trả lời:


2

Đây không phải là một lỗi nhưng hành vi dự kiến. Nếu bạn điều hướng đến Thành phần> Chuyển hướng trong giao diện của Quản trị viên Joomla, bạn sẽ thấy danh sách tất cả các yêu cầu URL dẫn đến 404. Joomla tự động ghi lại chúng trong thành phần này và định tuyến lại yêu cầu đến trang chủ.

Lý do tại sao là hai lần, đầu tiên là để ngăn trải nghiệm người dùng tiêu cực bằng cách giảm thiểu các trang lỗi và thứ hai, để cung cấp phương tiện cho quản trị viên trang web theo dõi và định tuyến lại theo cách thủ công đến các điểm cuối mong muốn. Tôi đã đính kèm một liên kết đến các tài liệu Joomla giải thích chi tiết hơn.

http://docs.j Joomla.org/Help33:Components_Redirect_Manager


@ Brian-- không có cách nào để ghi đè lên điều này và hiển thị 404 "phù hợp"?
101289

Có, vô hiệu hóa chuyển hướng plugin hệ thống.
Brian Bolli

plugin chuyển hướng bị vô hiệu hóa, nó vẫn chuyển hướng đến chỉ mục không có 404
user101289

Ngoài ra, tôi không thấy bất kỳ mục nào trong thành phần chuyển hướng, có hoặc không có plugin được kích hoạt.
101289

Phiên bản nào của Joomla bạn đang sử dụng?
Brian Bolli

2

Bạn có thể tùy chỉnh lỗi 404 (ví dụ hiển thị trang tùy chỉnh hoặc gửi ở đâu đó ngoài trang chủ) bằng cách thêm tệp PHP vào mẫu của bạn, đặt tên error.phpvà đặt nó vào thư mục gốc của mẫu (bên cạnh index.phpmẫu).

Bên trong tệp đó, bạn có thể cho biết phải làm gì, ví dụ gửi đến một nơi nào đó trong trang web của bạn (cập nhật /SOMEWHEREINYOURSITEvới URL mong muốn):

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

//example of a way to output the error code:
//echo $this->error->getCode();

if (($this->error->getCode()) == '404') {
    header('Location: /SOMEWHEREINYOURSITE');
}
?>

Cách 2:

Biết rằng bạn đang sử dụng tệp .htaccess (mà tôi giả sử bạn đang sử dụng máy chủ Apache), bạn có thể thêm một định nghĩa để làm gì với lỗi 404.

Đặt phần này ở đầu tệp .htaccess:

ErrorDocument 404 /SOMEWHEREINYOURSITE

Như với phương pháp trước, cập nhật /SOMEWHEREINYOURSITEvới URL mong muốn.


1
/Template/system/error.php mặc định cũng có thể được sao chép vào mẫu của bạn vì rất nhiều trong số chúng không đi kèm với một mẫu.
tristanbailey

Người dùng nên sao chép nó sau khi tệp cập nhật trong systemthư mục có thể bị ghi đè
bumerang

1

Gần đây tôi đã thấy điều này trên một vài trang web và chỉ phát hiện ra rằng nó xảy ra khi trang web ở chế độ ngoại tuyến và bạn đã đăng nhập vào frontend.

Khi trang web trực tuyến và bạn tạo một url, bạn sẽ nhận được trang lỗi tiêu chuẩn với mã trạng thái.

Khi trang web ngoại tuyến và bạn đã đăng nhập, bạn sẽ được chuyển hướng đến /index.php với mã số 30 xem mã trạng thái khác.

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.