You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu+Apache+Let's Encrypt环境下特定目录禁用HTTPS配置问题

解决方案

核心思路

通过添加URI匹配条件,对/keuken目录及其所有子页面单独处理:跳过HTTPS强制重定向,若已处于HTTPS则转回HTTP;其余所有请求保持强制HTTPS,同时保留原有的www转非www规则。

修改后的.htaccess配置

RewriteEngine On
RewriteBase /

# 处理www域名跳转:非/keuken请求转HTTPS,/keuken请求转HTTP
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteCond %{REQUEST_URI} !^/keuken(/.*)?$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteCond %{REQUEST_URI} ^/keuken(/.*)?$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# 处理非www域名:非/keuken请求强制HTTPS
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/keuken(/.*)?$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

# 处理非www域名:/keuken请求强制HTTP(避免HTTPS访问时的重定向循环)
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/keuken(/.*)?$ [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

关键规则说明

  • %{REQUEST_URI} !^/keuken(/.*)?$:匹配不是以/keuken开头的请求(包括子页面如/keuken/keuken.php)
  • %{REQUEST_URI} ^/keuken(/.*)?$:匹配是以/keuken开头的所有请求
  • [R=301,L]:301永久重定向,L表示执行完该规则后停止后续规则解析,避免冲突

注意事项

  1. 清除浏览器缓存:301重定向会被浏览器永久缓存,测试前需清空缓存或使用无痕模式
  2. 验证mod_rewrite启用:执行sudo a2enmod rewrite确保Apache重写模块开启,重启Apache生效
  3. 检查AllowOverride配置:在Apache站点配置文件(如/etc/apache2/sites-available/domain.nl.conf)中,确保目标目录的AllowOverride All已开启,否则.htaccess规则不会生效

内容的提问来源于stack exchange,提问作者Cmeer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:15:28