Virtualhost

通過letsencrypt排除https重定向上的某些路徑

  • March 27, 2020

我在燈組上有一個應用程序。該應用程序使用讓我們為 https 加密 SSL 證書。該應用程序的一項功能是允許使用者將某些內容嵌入到其他網站的 iframe 中。

使用 Let’s Encrypt 認證腳本,我強制所有流量重定向到 https。我希望允許嵌入路徑為 http 或 https。

這是我的虛擬主機conf文件:

# file: /etc/apache2/sites-available/mysite.com.conf
<VirtualHost *:80>

 ServerAdmin me@server.com
 ServerName mysite.com

 DocumentRoot /var/www/mysite.com

 <Directory />
   Options FollowSymLinks
   AllowOverride None
 </Directory>

 <Directory /var/www/mysite.com>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
   Order allow,deny
   Allow from all
 </Directory>

 # Log file locations
 LogLevel warn
 ErrorLog ${APACHE_LOG_DIR}/mysitecom_error.log
 CustomLog ${APACHE_LOG_DIR}/mysitecom_access.log combined

 RewriteEngine on
 RewriteCond %{SERVER_NAME} =mysite.com
 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

我想添加這樣的條件:

If URI begins with: embed/video
Do not redirect to https. Allow either http or https for this path.

同時保持所有其他流量重定向到 https。

特定規則的重寫條件在邏輯上與一起確定是否應應用該規則。你可以!用來否定一個條件。你應該能夠做類似的事情

RewriteEngine on
RewriteCond %{SERVER_NAME} =exmple.com
RewriteCond %{REQUEST_URI} !^/embed/video
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

如果伺服器名稱是 example.com 並且請求 URI 不以 /embed/video 開頭,則重定向到 https。

引用自:https://serverfault.com/questions/886234