微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mod_rewrite – 排除url

我需要一个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] 举报,一经查实,本站将立刻删除。

相关推荐