cla*_*rkk 8 apache mod-rewrite
我需要一个mod_rewrite来重定向所有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]
Run Code Online (Sandbox Code Playgroud)
gateway_callback必须排除所有匹配的网址
不应该重定向此URL,但确实如此!?
http://secure.localhost/da/gateway_callback/29/
Run Code Online (Sandbox Code Playgroud)
尝试在浏览器中刷新DNS缓存,但URL仍然重定向到 https
rme*_*ins 10
配置的主要问题是REQUEST_URI变量包含正斜杠之后的所有内容.第三个RewriteCond语句需要更新为以下内容:
RewriteCond %{REQUEST_URI} !^/da/gateway_callback/.*$ [NC]
Run Code Online (Sandbox Code Playgroud)
这应该与您提供的示例相匹配.如果URI并不总是以启动开头,/da/那么您可能需要输入通配符:
RewriteCond %{REQUEST_URI} !^/[^/]+/gateway_callback/.*$ [NC]
Run Code Online (Sandbox Code Playgroud)
其中,[^/]+匹配一个或多个字符,这是不是一个正斜杠.
我建议尽可能使用正则表达式锚点,因为它消除了歧义.尝试匹配REQUEST_URI的原始RewriteCond不使用它们,这可能会使管理员随意混淆.
另请注意,官方文档中的RewriteCond和RewriteRule指令的所有相关示例都使用了开始锚点.
| 归档时间: |
|
| 查看次数: |
10327 次 |
| 最近记录: |