我一直在为一个访问规则而苦苦挣扎,它需要重写一段添加路径的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这实际上解决了问题,但是我想知道当使用这个选项时,是否会对其他规则产生任何副作用。
发布于 2014-08-21 18:14:18
这是关于Apache内容协商的。
MultiViews搜索是服务器执行隐式文件名模式匹配并从结果中进行选择的地方。
例如,如果根文件夹中有一个名为configuration.php (或其他扩展名)的文件,并且您在htaccess中为一个名为configuration/的虚拟文件夹设置了一个规则,那么您的规则就会出现问题,因为服务器会自动选择configuration.php (如果启用了MultiViews,大多数情况下都是这样)。
如果您想禁用该行为,您只需在htaccess中添加以下内容
Options -MultiViews
这样,您的规则现在将被评估,因为内容协商被禁用。
编辑
在某些共享主机上,协商模块可能未启用。这会给你一个500错误。若要避免此错误,默认情况下可以将指令封装在IfModule块中。
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>https://stackoverflow.com/questions/25423141
复制相似问题