gpt4 book ai didi

linux - htaccess 规则不适用于 linux 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:31 26 4
gpt4 key购买 nike

在我的 Windows 上运行 xampp 的开发服务器上,我的 .htacess 重写规则工作正常。一旦我们进入运行 Linux core 3.8.0-21-generic#32-Ubuntu SMP Server version: Apache/2.2.22 (Ubuntu) 的实时服务器,我们的规则不包含参数不再有效,但具有参数的规则正在起作用。

    Options -Indexes 

<filesMatch "\.(html|htm|txt|js|htaccess)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>

ErrorDocument 404 /404.php

RewriteEngine On
#Main site rules
RewriteRule ^login/?$ login.php [NC,L]
RewriteRule ^contact/?$ contact.php [NC,L]

上面的 contact.php 和 login.php 规则不起作用。但是,这个带有参数的更复杂的规则正在起作用:RewriteRule ^game/([a-zA-Z0-9]+)/?$ handles/handle-game-select.php?name=$1 [NC,L]

导致这种情况发生的两个服务器环境之间是否存在差异?

此外,如果我们做一些奇怪的事情,例如:RewriteRule ^contact.x contact.php [NC,L] 我们就可以访问 contact.php...

对这个很困惑。

感谢您的帮助。

最佳答案

我怀疑这是由于启用了 MultiViews 选项。在顶部添加此行以禁用它:

Options -MultiViews
  • 选项MultiViewsApache 的内容协商模块 使用,该模块在mod_rewrite 之前运行,并使Apache 服务器匹配文件的扩展名。所以 /file 可以在 URL 中,但它将服务于 /file.php

关于linux - htaccess 规则不适用于 linux 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21836724/

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