![通过 letsencrypt 排除 https 重定向中的某些路径](https://linux22.com/image/714343/%E9%80%9A%E8%BF%87%20letsencrypt%20%E6%8E%92%E9%99%A4%20https%20%E9%87%8D%E5%AE%9A%E5%90%91%E4%B8%AD%E7%9A%84%E6%9F%90%E4%BA%9B%E8%B7%AF%E5%BE%84.png)
我在 lamp stack 上有一个应用程序。该应用程序使用 let's encrypt SSL 证书进行 https。该应用程序的一个功能是允许用户在其他网站的 iframe 中嵌入某些内容。
使用 Let's Encrypt 认证脚本,我已强制所有流量重定向到 https。我希望允许嵌入路径为 http 或 https。
这是我的虚拟主机配置文件:
# file: /etc/apache2/sites-available/mysite.com.conf
<VirtualHost *:80>
ServerAdmin [email protected]
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。
答案1
特定规则的重写条件在逻辑上按 AND 连接在一起,以确定是否应应用该规则。您可以使用!
它来否定条件。您应该能够执行类似以下操作
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。