惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

云风的 BLOG
云风的 BLOG
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 叶小钗
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
人人都是产品经理
人人都是产品经理
宝玉的分享
宝玉的分享
博客园 - 司徒正美
WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
罗磊的独立博客
Vercel News
Vercel News
T
The Blog of Author Tim Ferriss
T
Tailwind CSS Blog
A
About on SuperTechFans
Apple Machine Learning Research
Apple Machine Learning Research
L
LangChain Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
V
Visual Studio Blog
S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
博客园 - 聂微东

Apache

请教下 Apache2 代理二级域名的问题 Apache 错误:(20014)Internal error 使用 Apache 反代 DuckDuckGo,如何处理 external-content.duckduckgo.com?反代 Google 时遇到 recaptcha 验证码又怎么解决? 大佬们, apache 服务器配置虚拟主机,配置禁止所有非法域名时。 flink 如何提高字符串解析性能 有没有哪位熟悉 apache httpd,有个离谱的事情问一下 部署个 apache/doris 怎么就这么复杂 httpd 和其它 web server 的通信方式有哪些? 使用 docker 安装 h5ai 后,直接访问文本文件乱码 关于 htaccess Redirect 301 问题,怎么去掉参数 反向代理配置 ip 可以访问,域名不行 「分布式系统前沿技术」专题 | Pulsar 的设计哲学 有在 macOS 配置 Apache 服务器的吗? 大佬们求教: HttpClients.createDefault() LApache 虚拟主机设置.htaccess 实现全站 HTTPS Apache2 如何配置 SSL 证书啊 请教乐于助人、高手如云的 V2 朋友们! 一个服务器分别运行 Apache2 子域名网站和 Nginx 主域名网站,子域名为何出现 400 Bad Request? 个推基于 Apache Pulsar 的优先级队列方案 Apache 2.4.38 在编译配置参数上,如何指定 apache 的配置文件安置到/etc 里面? apache 下如何将 xxx.com www.xxx.com https://xxx.com 重定向 https://www.xxx.com 的 Apache 的 Access Log 中老是出现 OPTIONS 访问,导致数据库连接中断,怎么处理? 很灵异的 apache 伪静态规则偶尔会失效 大家遇到过吗?求解决方法 flume 抓 TOMCAT 日志发 kafka,怎么按日志内容分段发送? ubuntu16.04 搭建 wiki 求助 关于 apache 多域名多站点(http 和 https 都有)单服务器配置问题 配置好的 CentOS httpd SSL 服务,为什么不能网页不能自动重定向 https? 请教一下在 Lightsail 部署 Python Flask project 时候遇到的问题 想问问大神, apache 搭建的反代,套了 CF 之后,被反代的网站出现 ERROR1000,应该如何解决 Apache 可以通过路由配置让一个域名访问两个系统吗?
Apache rewrite 部分细节
cloudL · 2017-02-15 · via Apache

多个.htaccess 匹配的优先级

网站根路径下有一个.htaccess ,根目录下的文件夹 test 中也有一个.htaccess ,那么,访问 http://localhost/test/xyz 会有什么结果呢( test 下不存在名为 xyz 的文件),或者说如果两个.htaccess 都会对错误的访问进行处理,谁的优先级更高?

根路径下:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [L]

RewriteRule ^.*$ https://baidu.com [R=301,L]

test 路径下:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -s [OR]

RewriteCond %{REQUEST_FILENAME} -l [OR]

RewriteCond %{REQUEST_FILENAME} -d

RewriteRule ^.*$ - [L]

RewriteRule ^.*$ https://bing.com [R=301,L]

测试结果是 test 路径下的.htaccess 起效了,也就是在浏览器上访问 http://localhost/test/xyz 实际上跳转到了 Bing 。当我把 test 下的.htaccess 移除后则会跳转到 Baidu.

罗列一些细节

$N 匹配的是 RewriteRule 中正则匹配的内容(RewriteRule backreferences),而%N 匹配的是 RewriteCond 中正则匹配的内容(RewriteCond backreferences),而\N 则是正则表达式中原生的反向引用 有时候出现的::并不是特殊的符号,只是方便使用的分隔符而已,喜欢的话可以用##等替代 12 RewriteCond TestString CondPattern 中, TestString 可以是以下内容构成的:

RewriteRule backreferences

RewriteCond backreferences

RewriteMap expansions 3

Server-Variables 4

RewriteRule Pattern Substitution [flags]中, pattern 匹配的是什么?就我的理解来说,如果访问的链接是 http://localhost:80/test/hello/hahahaha?x=100 ,

如果它由网站根目录下的.htaccess 来处理,它匹配的内容就是 test/hello/hahahaha; 如果它由根目录 /test/.htaccess 来处理,它匹配的内容就是 hello/hahahaha

What is matched?5 In VirtualHost context, The Pattern will initially be matched against the part of the URL after the hostname and port, and before the query string (e.g. “/app1/index.html ”). In Directory and htaccess context, the Pattern will initially be matched against the filesystem path, after removing the prefix that led the server to the current RewriteRule (e.g. “ app1/index.html ” or “ index.html ” depending on where the directives are defined). If you wish to match against the hostname, port, or query string, use a RewriteCond with the %{HTTP_HOST}, %{SERVER_PORT}, or %{QUERY_STRING} variables respectively. In any case, remember that regular expressions are substring matches. That is, you don ’ t need the regex to describe the entire string, just the part that you wish to match. Thus, using a regex of . is often sufficient rather than .*, and the regex abc is not the same as ^abc$.

以后再补充。。。。。