it-swarm-vi.com

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?

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?

7
Hung Tran

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ó ném một 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.

Chỉnh sửa :

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.

6
csbenjamin

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
FFrewin

Đề xuất của tôi sẽ là sử dụng sh404sef và luôn ghim một mục vào URL mà không cần một URL. Xem "Quản lý Id vật phẩm" như một phần trong cấu hình của nó:

http://anything-digital.com/sh404sef/docs/configuration.html

1
Chad Windnagle