Điểm:1

Hợp nhất nhiều VirtualHost thành một khối, đây có phải là công việc dành cho SetEnvIf không?

lá cờ dj

Chỉnh sửa Tôi nghĩ những gì tôi cần ở đây là ĐặtEnvIf

Tôi đang cố gắng hợp nhất tất cả các Virtualhost có cổng 80 của mình thành một khối để thuận tiện, nhưng tôi đang gặp khó khăn với mảnh ghép cuối cùng.

Tất cả các vhost cổng 80 đều chấp nhận một wwwkhông có www kết nối đến /.well-known/acme-thử thách/. Tất cả các yêu cầu khác 301 đến https://example.com/ - không www.

Tôi nghĩ rằng tôi cần phải biến %{HTTP_HOST} thành một Định nghĩabiến có thể trừ "www" có thể, ví dụ. ${SITE}.

Hoặc có thể có một cách tốt hơn?

Đây là nơi tôi đang ở cho đến nay:

<VirtualHost ${IP1}:80>
    Define SITE hmmm
    ServerName example-1.com
    ServerAlias www.example-1.com
    ServerAlias example-2.com
    ServerAlias www.example-2.com
    # And so on... 25 vhosts
    DocumentRoot /home/user/htdocs/${SITE}

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
    RewriteRule ^ https://${SITE}%{REQUEST_URI} [NE,R=301,L]

    <Directory /home/user/htdocs/${SITE}>
        Options FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
Điểm:1
lá cờ kz

Tôi nghĩ thứ tôi cần ở đây là SetEnvIf

Nhưng, AFAIK, bạn không thể sử dụng môi trường các biến trong Tài liệuRoot<Directory> chỉ thị. (Và bạn không thể Định nghĩa các biến thành chuỗi được tính toán/động bằng cách sử dụng biểu thức chính quy.)

DocumentRoot /home/user/htdocs/${SITE}

RewriteEngine bật
RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/
RewriteRule ^ https://${SITE}%{REQUEST_URI} [NE,R=301,L]

<Thư mục /home/user/htdocs/${SITE}>

Thay vào đó, bạn có thể định nghĩa một Tài Liệu ẢoRoot và sử dụng một biểu thức chính quy thích hợp trong các chỉ thị mod_rewrite và <DirectoryMatch> thùng đựng hàng.

Ví dụ: giả sử tất cả các miền của bạn có dạng <name>.<tld> sau đó thử cách sau thay vì tập hợp con các chỉ thị ở trên:

VirtualDocumentRoot "/home/user/htdocs/%-2.0.%-1.0"

RewriteEngine bật
RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+?)\.?$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,R=301,L]

<DirectoryMatch "/home/user/htdocs/[^.]+\.com">

Các %-2.0.%-1.0 một phần của Tài Liệu ẢoRoot lệnh chụp tên miền và TLD (2 phần cuối) từ tên máy chủ được yêu cầu. Điều quan trọng là điều này không bao gồm tên miền phụ www tùy chọn (phần thứ 3 từ bên phải).

Các %1 phản hồi trong viết lại quy tắc thay thế chuỗi tham chiếu phần tên máy chủ trừ phần tùy chọn www. tiền tố (tên miền phụ) được ghi lại ở phần trước CondPattern. (Điều này cũng loại trừ dấu chấm trong trường hợp FQDN.)

Các <DirectoryMatch> chỉ thị cho phép truy cập vào bất kỳ thư mục nào có dạng /home/user/htdocs/<example>.com.

Thẩm quyền giải quyết:

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.