htaccess重定向排除特定页面异常:子文件夹URL跳转到根目录
.htaccess重定向排除指定URL后子目录失效的解决方法
你遇到的问题是因为修改后的RewriteRule否定匹配写法导致路径捕获异常,$1没有正确获取到子目录的路径,所以重定向到了根目录。
直接换下面的配置就能解决:
RewriteEngine On # 排除所有以/send开头的URL RewriteCond %{REQUEST_URI} !^/send # 只处理HTTP(80端口)请求 RewriteCond %{SERVER_PORT} 80 # 正常重定向到HTTPS对应路径 RewriteRule ^(.*)$ https://www.domain.co.uk/$1 [R,L]
原理说明
把排除逻辑移到RewriteCond里,用%{REQUEST_URI}匹配完整请求路径,否定规则!^/send会跳过所有以/send开头的请求。而原来的RewriteRule保持不变,$1就能正确捕获请求的完整路径,子目录的URL自然会被重定向到HTTPS对应的子目录。
如果需要精确排除两个特定的send开头URL(比如/send-form和/send-data),把排除条件改成下面这样即可:
RewriteCond %{REQUEST_URI} !^/send-form$ RewriteCond %{REQUEST_URI} !^/send-data$
内容的提问来源于stack exchange,提问作者Barry
相关产品推荐
相关产品推荐

