gpt4 book ai didi

apache2 在重写之前给出 404

转载 作者:行者123 更新时间:2023-12-01 15:20:02 26 4
gpt4 key购买 nike

我的 .htaccess 中有一个重写规则:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^vt$ vt.php [L]
</IfModule>

如果文件“vt”存在于我的网站目录中,则重写完成。但是如果文件 'vt' 不存在,apache2 只会给出 404 错误。

所以它似乎 apache2 在检查文件统计后确实重写了。我该如何解决这个问题?


我认为这是一个错误。最后我使用这条规则来避免使用两个文件(vt 和 vt.php)。

RewriteRule ^vt$ - [H=application/x-httpd-php]

最佳答案

这听起来好像这里发生了两件事。

  1. Mod_rewrite 似乎没有加载
  2. Multiviews使它看起来好像加载了 mod_rewrite

什么 Multiviews是的,是 mod_negotiation 的一部分,它试图“猜测”请求的目的是什么,如果它缺少诸如扩展之类的东西。所以用 Multiviews打开,如果它看到对 /vt 的请求和文件 vt不存在,它猜测并找到/vt.php并提供它,否则它什么都不做并返回 404。这会使它看起来好像实际上正在应用 mod_rewrite 规则。如果 mod_rewrite 实际上已打开,那么即使打开了 mod_negotiation 并且文件丢失(这将导致 404),它也会应用该规则。

因此 1. 确保实际加载了 mod_rewrite。为此,请检查您的 httpd.conf 文件,应该有一行看起来像这样(未注释):

LoadModule rewrite_module modules/mod_rewrite.so

或者您可以尝试删除 <IfModule mod_rewrite.c>容器,如果出现 500 服务器错误,mod_rewrite 不会加载。

然后 2. 在您的 htaccess 文件中添加此行以关闭 Multiviews :

Options -Multiviews

关于apache2 在重写之前给出 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19493891/

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