- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\]*)?\HTTP/
除了以下部分,我理解上面一行中的所有内容:
([#?][^\]*)?\HTTP/
我做了一些研究,发现方括号用于匹配其中的任何一个字符。但是,我还了解到 ?
用于使前面的标记可选,而 ^
表示“匹配开始”。
因此,为什么上述段中的方括号中同时包含 ?
和 ^
?我认为方括号只是用作“字符类”。
另外,段中HTTP/
的具体用途是什么?我的所有搜索都无济于事。
最佳答案
首先了解什么是THE_REQUEST
。
THE_REQUEST
变量表示 Apache 从您的浏览器收到的原始请求,并且在执行某些重写规则后它不会被覆盖。此变量的示例值为:
GET /index.php?id=123 HTTP/1.1
现在您需要进一步说明的部分:
([#?][^\ ]*)?\ HTTP/
这是这里发生的事情:
?
或 #
字面意思,因为在 [...]
中几乎所有特殊字符都按字面意思匹配?
在 ([#?][^\]*)
之后使其成为可选匹配项\HTTP
匹配空格后跟 HTTP
现在让我告诉你,这里不需要匹配的 #
,因为 Web 服务器永远不会收到 #
之后的 URL。这一切都由客户端浏览器处理。
最好使用这个RewriteCond
:
RewriteCond %{THE_REQUEST} ^(.+)\.php(\?\S*)?\ HTTP/ [NC]
关于regex - 了解 RewriteCond 中的 THE_REQUEST 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993370/
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\]*)?\HTTP/ 除了以下部分,我理解上面一行中的所有内容: ([#?][^\]*)?\HTTP/ 我做了
%{REQUEST_FILENAME} 和 %{THE_REQUEST} 返回什么? 我只是在检查我们的 .htaccess 文件,我突然明白了,我对此知之甚少。下面的代码同时使用了两者。它有效,我只
我正在试验 mod-rewrite。我以为我想要的很简单,但我没有通过 REQUEST_URI 获得请求的文件的 URI。而是传递传递的名称。 manual说: THE_REQUEST The ful
我是一名优秀的程序员,十分优秀!