Apache 不允许 .htaccess

Apache 不允许 .htaccess

我将 Ubuntu 升级到 14.04 LTS,将 Apache 升级到 2.4。当服务器首次重新启动时,访问页面时出现 403 错误。这时我才意识到我需要更改为Require all granted。我以为一切都正常了,直到我意识到.htaccess任何地方都没有加载。我认为那也需要更改,但据我所知,Apache 文档说没问题。以下是我Directory目前的规则。

VirtualDocumentRoot /var/hosts/%-2.0.%-1.0/%-3+/public_html
<DirectoryMatch "^/var/hosts/[^/]+/[^/]+/public_html">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
</DirectoryMatch>

我首先想到的是正则表达式是错误的,并且没有加载任何规则。所以我注释掉了Require all granted,发现它阻止了网站再次加载。所以我知道它正在加载它们。我必须执行以下操作才能使它们正常工作。

<Directory /var/hosts/>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

我可以把它留在那里吗?有什么想法吗?为什么它不起作用?

答案1

尝试这个:

  1. 配置 Apache mod_rewrite

    a2enmod rewrite
    
  2. 添加以下代码到/etc/apache2/sites-available/default

    AllowOverride All 
    
  3. 重启 Apache

    /etc/init.d/apache2 restart
    

答案2

我解决了我的问题。

Apache 2.4 似乎在[^/]+匹配目录时存在问题。我能够让它与匹配*。它匹配除 之外的所有内容/

我在尝试保护 的任何子域时再次遇到了这个问题dev。我发现在 VirtualHost 中指定域而不是使用 REGEX 是可行的。

在看过目录文档我了解了*并尝试了一下。还了解到这DirectoryMatch不会影响子目录并且Directory允许使用 REGEX。

相关内容