.htaccess 和 example.com.conf 的区别

.htaccess 和 example.com.conf 的区别

我有一个用于 example.com 网站的 example.com.conf 和 .htaccess。

当我将以下内容放入 .htacess 文件中时

RewriteEngine 开启
# 如果目录或文件存在,则直接使用
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# 否则转发至 index.php
重写规则.index.php

它有效。同样的规则在 example.com.conf 中的 VirtualHost 中不起作用,该 VirtualHost 使用 apache 中的 sites-enabled 启动?使用 example.com.conf 时会抛出“错误请求”错误

这究竟是什么原因,为何会受到区别对待?

答案1

文件基本上是在与该位置的部分htaccess相同的上下文中配置指令的另一种方式。<Directory>

这对您不起作用的原因是mod_rewrite配置对上下文很敏感 - 您在那里所拥有的内容需要进行一些调整才能在<VirtualHost>上下文中而不是.htaccess<Directory>上下文中工作。

要停止失败,您只需从 切换RewriteRule . index.phpRewriteRule . /index.php- 但上下文更改也会破坏您对 的使用%{REQUEST_FILENAME},因为它要求请求已经映射到文件系统位置。所以我建议只需将规则放在 中的块内<Directory>即可<VirtualHost>

相关内容