Có cách nào để chặn truy cập vào các thành phần bằng cách sử dụng URL không phải SEF không?


7

Khách hàng của tôi nhận ra rằng chúng tôi có thể truy cập vào các thành phần trong Joomla bằng cách sử dụng URL không phải SEF ngay cả khi SEF được bật.

Anh ấy không thích nó, vì không có Itemid trong URL, trang này rất lộn xộn. Ví dụ: http://www.j Joomla.org/index.php?option=com_content là những gì anh ấy không muốn mọi người nhìn thấy trên trang web của mình.

Có cách nào để chúng tôi có thể chặn quyền truy cập vào trang web bằng cách sử dụng URL không phải SEF khi SEF được bật trong Cấu hình toàn cầu không?

Câu trả lời:


6

Bạn có thể tạo một plugin hệ thống với mã này:

public function onAfterInitialise(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $uri = JUri::getInstance();
    if($config->get("sef") && $app->isSite() && $uri->getQuery()){
        throw new Exception("Not Found", 404);
    }
}

Vì vậy, nếu chúng ta có bất cứ điều gì sau dấu chấm hỏi ?, nó sẽ xuất hiện lỗi 404.

Thay vào đó, ném lỗi 404, bạn có thể chuyển hướng người dùng đến trang chủ nếu bạn muốn.

Biên tập:

Nếu bạn muốn cho phép một số tiện ích mở rộng sử dụng dấu hỏi, bạn có thể làm:

public function onAfterRoute(){
    $app = JFactory::getApplication();
    $config = JFactory::getConfig();
    $menu = $app->getMenu();
    if($config->get("sef") && $app->isSite() && !$menu->getActive()){
        throw new Exception("Not Found", 404);
    }
}

Nếu tuyến đường hiện tại không có menu liên quan, nó sẽ xuất hiện lỗi 404.


Đó là một giải pháp tốt đẹp. Tuy nhiên, chúng tôi cần đảm bảo không có tiện ích mở rộng sử dụng dấu hỏi để xác định bố cục hoặc thực hiện các chức năng của chính nó. Ví dụ: domain.com/submit?layout=success, domain.com/submit?layout=error
Hung Tran

1
@HungTran Xem chỉnh sửa của tôi ở trên
csbenjamin

Cảm ơn bạn, tôi đã cố gắng và nó hoạt động hoàn hảo. Tự hỏi tại sao tôi đã không nghĩ về việc sử dụng plugin hệ thống trước đây.
Hùng Trần

2

Nhưng làm thế nào khách truy cập thông thường sẽ đoán các URL không phải SEF và sử dụng các URL này thay vì URL SEF, để họ có thể có được chế độ xem mẫu lộn xộn?

Dù sao đi nữa, một cách để tránh điều này là sử dụng tiện ích mở rộng SEF của bên thứ 3, điều đó sẽ luôn dịch một url không phải SEF sang url SEF tương ứng. Khách truy cập sẽ không nhìn thấy non-sef trong thanh địa chỉ của trình duyệt.

Nhưng vấn đề với mẫu lộn xộn sẽ không biến mất. Tôi đoán vấn đề này là do thực tế là một mục menu khác hoặc không có mục menu nào được xem xét, trong khi xem các trang, do đó, bất kỳ hậu tố css, mô-đun hoặc những điều đặc biệt khác dành cho các trang này sẽ được xử lý chính xác.

Để loại bỏ vấn đề này, bạn cần chỉ định các trang này cho mục menu mong muốn.


2
Vấn đề là, có rất nhiều bot xấu, những người sẽ quét trang web của bạn để tìm mọi thứ và mọi thứ, vì vậy việc ẩn nó khỏi người dùng phía trước không thực sự có ý nghĩa nhiều. Tôi đã thấy nhật ký truy cập chứa đầy các url thành phần cho những thứ tôi chưa cài đặt vì chúng đang quét các thành phần dễ bị tổn thương.
Brian Peat

Đó là sự thật, nhưng Hùng đã đề cập đến khách truy cập của con người và cách ngăn hiển thị các url không phải sef mà không có mục trình đơn chính xác gây ra sự cố hiển thị.
FFrewin

Dấu trang cũ hoặc kết quả Google là những cách để có được các url không mong muốn. Ngoài ra, tránh việc lộn xộn và cấm sử dụng là hai điều khác nhau. Rõ ràng, bạn không thể ngăn họ vào các url không mong muốn. Bạn có thể ngừng trả lời Joomla với họ.
sovainfo

Được rồi, cũng đồng ý về điều đó. Nhưng tại sao phải phục vụ một trang 404, khi trang đó thực sự tồn tại và bạn có thể làm cho nó hiển thị đẹp mắt với url mong muốn? Cuối cùng, đặc biệt là google sẽ loại bỏ bất kỳ url không sef nào khỏi kết quả tìm kiếm, khi đó sẽ có một sef chính tắc. Và tôi cảm thấy những gì Hùng yêu cầu là họ không thích hiển thị không phải là sef và để tránh bất kỳ vấn đề hiển thị nào khi không có id-id hoặc sai.
FFrewin

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.