我一直在努力与访问规则,需要重写一段URL添加一个路径。
RewriteRule ^(configuration/.+)$ application-server/$1 [L,NC,R=301,NE]
这个规则导致我的Joomla网站上只有一个空白页面,没有错误日志或消息。奇怪的是,所有其他规则我都完美地工作:
RewriteRule ^(log/.+)$ application-server/$1 [L,NC,R=301,NE]
RewriteRule ^(monitor/.+)$ application-server/$1 [L,NC,R=301,NE]
最后,我在一个论坛上发现了一个使用以下选项的建议:
Options -Multiviews
这实际上解决了这个问题,但是我想知道当使用这个选项时,是否会对其他规则产生任何副作用。
1条答案
按热度按时间2w3kk1z51#
这是关于Apache内容协商的。
MultiViews
搜索是服务器进行隐式文件名模式匹配并从结果中进行选择的地方。例如,如果你在根文件夹中有一个名为
configuration.php
(或其他扩展名)的文件,并且你在htaccess中为一个名为configuration/
的虚拟文件夹设置了一个规则,那么你的规则就会有问题,因为服务器会自动选择configuration.php
(如果启用了MultiViews
,这是大多数情况下的情况)。如果你想禁用这种行为,你只需要在你的htaccess中添加这个
Options -MultiViews
这样,您的规则现在将被评估,因为内容协商已禁用。
编辑
在某些共享主机上,negotiation 模块可能没有启用。这将给你给予500错误。为了避免这个错误,你可以在默认情况下将指令封装在
IfModule
块中。