gpt4 book ai didi

Apache %{REQUEST_URI} 无法正常工作

转载 作者:行者123 更新时间:2023-12-04 03:13:34 25 4
gpt4 key购买 nike

虽然我有一些 .htaccess 文件设置,但我没有使用虚拟主机或任何花哨的东西。以下是我在 httpd.conf 中的重写规则:

RewriteEngine On

RewriteCond %{REQUEST_URI} !^/app/smsapi [NC]
RewriteRule (.*) https://www.example.com/uri=%{REQUEST_URI} [R,L]

这条规则基本上是说,如果 uri 以/app/smsapi 开头,则触发重写。但是当我重新启动服务器并尝试时,我得到了一些奇怪的结果。

当我请求 URL https://www.example.com/app/smsapi/index.php 时,我得到了预期的 200 成功代码。但是,当我请求 URL http://www.example.com/app/smsapi/index.php 时, 它重定向到 https://www.example.com/uri=/app/smsapi/index.php .所以它实际上触发了规则,即使请求 URI 不满足条件。

所以,我决定关闭重写规则并试一试。现在,这两个 URL 都给我一个 200 成功代码。

现在,我知道无法访问服务器的其他人无法轻易解决此问题,但我说这肯定是 REQUEST_URI 未正确触发的问题是否正确?我已经证明,没有重写规则,一切正常,但使用重写规则,第二个 URL 被重定向。因此,重定向必须是由重写规则引起的?此外,不满足重定向规则的条件。这不是证明rewrite rule的作用有问题吗?

还有其他可能吗?

更新这里发生了一些非常奇怪的事情。我设置了一个本地服务器并尝试了相同的规则以及我为 URL http://192.168.0.112/app/ 得到的内容是

http://192.168.0.112/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/uri=/app/

这是正确的,因为只要 URL 不像/app/smsapi,它就应该重定向它。想知道为什么这不会在真实服务器上发生。此外,在何处插入这些规则似乎也有所不同。 (我只在 LoadModule 命令之后包含这些规则)。

在本地主机上,如果我将这些规则放在目录部分的上方或下方,它将不起作用。但是,如果我将它包含在 inside Directory 部分,它就会。

在服务器上,如果我将规则包含在目录部分中,它们将不起作用。但是,如果我将它们包含在目录部分的上方或下方,它们就会开始工作。

在我看来,这是由于版本不同造成的。我的本地主机是运行 Apache 2.4.18 的 Ubuntu Desktop 16.04。而服务器是运行 Apache 2.2.15 的 CentOS 6.8。

但是,我认为关于为什么在服务器上重定向只发生一次(尽管它被配置为最多 20 次)的谜团与 https 有关。这也与原始问题有关,即使在不匹配的规则上,https 也会被重定向。

有线索吗?

更新我用相同的规则更新了 httpd.conf 文件,但我使用了 http://而不是 https://,它给了我 20 次重定向的正确结果。这意味着我已将问题隔离到 https。

最佳答案

您在第一句话中报告了确切的问题:“我没有使用虚拟主机或任何花哨的东西,尽管我有一些 .htaccess 文件设置”

.htaccess 是“花哨的”并且过于复杂,而不是虚拟主机。

如果您一开始就在虚拟主机中定义了 RewriteCond 它会起作用,但是 .htaccess 是每个目录的上下文(也就是一场噩梦)并且 正则表达式 ^/在该上下文中永远不会匹配 .

如果您想在每个目录上下文(目录或 .htaccess)中匹配 REQUEST_URI,您需要删除初始斜杠,即:

RewriteCond %{REQUEST_URI} !^app/smsapi [NC]

另外,还要考虑到您可能不需要为此添加 RewriteCond:

RewriteRule ^(?!app/smsapi)(.*) https://www.example.com/uri=$1 [R,L]

关于Apache %{REQUEST_URI} 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42973130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com