我需要一个mod_rewriteredirect所有http请求到https ,但我想排除一些URL
# force https RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^secure. [NC] RewriteCond %{REQUEST_URI} !gateway_callback [NC] RewriteRule ^. https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,QSA]
所有匹配gateway_callback URL必须被排除
这个url不应该被redirect,但它确实!
http://secure.localhost/da/gateway_callback/29/
试图在浏览器中刷新DNScaching,但URL仍然redirect到https
.htaccess重写规则冲突
如果通过htaccess查询string参数不存在,则将HTTPSredirect到HTTP
apache htaccess重写URL友好的SEO
Mod_Rewrite意外的行为L标志
.htaccess导致子文件夹中的问题
如何使用mod_Rewrite来检查一个静态文件的多个文件夹
htaccess 301redirectURL的参数
htaccessurl重写不工作
如何激活mod_rewrite?
.htaccess重写505错误循环
你的配置的主要问题是,REQUEST_URI变量包含正斜杠之后的所有内容。 第三个RewriteCond语句需要更新为如下所示:
RewriteCond %{REQUEST_URI} !^/da/gateway_callback/.*$ [NC]
这应该与您提供的示例相匹配。 如果URI不总是以/da/开头,那么你可能需要放入一个通配符:
RewriteCond %{REQUEST_URI} !^/[^/]+/gateway_callback/.*$ [NC]
其中[^/]+匹配一个或多个不是正斜杠的字符。
我会建议总是尽可能使用正则表达式锚,因为它消除了歧义。 尝试匹配REQUEST_URI的原始RewriteCond不使用它们,这可能会使管理员不经意地一瞥。
另外请注意, 官方文档中 RewriteCond和RewriteRule指令的所有相关示例都使用起始锚点。
尾随的斜线会阻止你匹配吗? 我从来不清楚尾部的斜线是否保留。 我建议改变你的第三个条件
RewriteCond %{REQUEST_URI} !/gateway_callback/d+/?$ [NC]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。