Làm thế nào Drupal có thể được thực hiện để phục vụ với các đường dẫn gốc?


7

Tôi đang cố gắng tránh phục vụ các trang tải tài nguyên css và js thông qua các URL chỉ định http hoặc https. (Tôi đang cố gắng tìm cách giải quyết cho vấn đề được mô tả trong câu hỏi này , trong trường hợp không thể tìm thấy giải pháp thực sự.)

Vì Drupal đang chỉ định http: // cho href cho tất cả các tệp CSS và JS, khi máy chủ chuyển nhầm sang https, như được mô tả trong câu hỏi đã nói ở trên , trình duyệt dường như bỏ qua tất cả các tệp này và tôi nhận được một trang không bị chặn .

Thay vì

<link type="text/css" rel="stylesheet" href="http://www.example.com/sites/default/files/css/css_pbm0lsQQJ7A7WCCIMgxLho6mI_kBNgznNUWmTWcnfoE.css" media="all" />

(Vân vân.)

Tôi muốn phục vụ

<link type="text/css" rel="stylesheet" href="/sites/default/files/css/css_pbm0lsQQJ7A7WCCIMgxLho6mI_kBNgznNUWmTWcnfoE.css" media="all" />

hoặc thậm chí

<link type="text/css" rel="stylesheet" href="//www.example.com/sites/default/files/css/css_pbm0lsQQJ7A7WCCIMgxLho6mI_kBNgznNUWmTWcnfoE.css" media="all" />

Tôi có thể tạo các URL phục vụ Drupal không chỉ định giao thức không?

Câu trả lời:


10

Bạn có thể sử dụng hook của quy trình mẫu (Your_THEME_ process_html) để viết lại tất cả các url tài nguyên (js và css) bằng cách sử dụng biểu thức chính quy.

Dưới đây là một ví dụ biến đổi tất cả http://hoặc https://thành //:

function YOUR_THEME_process_html(&$vars)
{
    foreach (array('head', 'styles', 'scripts') as $replace) {
        if (!isset($vars[$replace])) {
            continue;
        }

        $vars[$replace] = preg_replace('/(src|href|@import )(url\(|=)(")http(s?):/', '$1$2$3', $vars[$replace]);
    }
}

Điều này làm việc như một cơ duyên đối với tôi. Chúng tôi cũng đứng sau một máy chủ F5 và đang sử dụng nó để đảm bảo tất cả các yêu cầu được thực hiện thông qua https.
dùng5013

Điều này làm việc cho tôi, thật không may, nó dường như không ảnh hưởng đến các thẻ img (thậm chí thêm img vào mảng) vì vậy tôi vẫn đang giải quyết các vấn đề với điều này. Thật kỳ lạ khi Drupal sẽ tải tất cả các tài nguyên qua HTTP ngay cả khi đó là HTTPS.
nbsp

imgkhông phải là một phần của các $varsbiến được truyền từ YOUR_THEME_process_html. Những hình ảnh bạn đang thử thay đổi URL nguồn, chúng có phải là một phần của nội dung không?
Mike Vranckx 6/07/2015

Làm việc như người ở! Đối với những người thắc mắc làm thế nào để áp dụng chuyển đổi này cho các liên kết trong nội dung trang, hãy thêm 'page'vào mảng trong foreachvòng lặp.
coredumperror


-1

Chúng tôi có cùng một vấn đề với một trang web mà chúng tôi đang phát triển và không thể giải quyết được lý do tại sao một số đường dẫn sẽ là https trong khi những đường dẫn khác sẽ là http. Công việc xung quanh, mà bạn có thể không thích câu trả lời, là sử dụng mô-đun Bệnh lý để biến mọi thứ từ tuyệt đối thành tương đối để các biểu mẫu của bạn sẽ sử dụng / path-to-form thay vì http: //www.whthing.com/ đường dẫn đến hình thức .


3
Vì bệnh lý là một bộ lọc đầu vào, nên AFAIK chỉ ảnh hưởng đến nội dung chứ không ảnh hưởng đến các URL mà Drupal tạo ra. Vì vậy, tôi không thấy làm thế nào điều này có thể giúp đỡ ở đây.
iconoclast
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.