Ubuntu .htaccess 不起作用

Ubuntu .htaccess 不起作用

我使用这些命令配置 ubuntu 服务器。

sudo a2enmod rewrite
sudo a2ensite 000-default.conf

我像这样编辑 000-default.conf。

<Directory /var/www/html>
        Options FollowSymLinks
        AllowOverride all
        Require all granted
</Directory>

sudo service apache2 restart

我使用 let encrypt 创建 ssl。如果我打开 myweb.com,它会重定向到https://myweb.com 。但如果我打开http://myweb.com 它显示 apache 页面未重定向到https://myweb.com 。看起来 .htaccess 没有运行。

这是.htaccess 代码。

RewriteEngine On
RewriteCond %{HTTPS} off

RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

如何修复?

答案1

我发现一个关于 Apache 的奇怪问题.htaccess

.htaccess在公共html目录中设置了一个文件,用于基本身份验证。我还设置了必要的 apache 配置,正如许多指导站点、页面等所指示的那样,所以我知道我的设置基本正确。

无论我如何配置 apache,我都不会收到身份验证提示。

由于我将密码存储在公共 html 目录的父目录中,因此我需要将该目录包含在 apache 定义中

原始定义如下:

<Directory /srv/www/mysite/public_html>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Require all granted
</Directory>`

然后我将配置代码更改为以下内容:

<Directory /srv/www/mysite>
  Options Indexes FollowSymLinks MultiViews
  AllowOverride All
  Require all granted
</Directory>`

密码文件存储在 /srv/www/mysite/access/.htpasswd 中。根据第一个配置模式,此目录超出了配置范围。

通过备份目录(公共 html 的父目录),“access”目录现在处于范围内。现在 apache 会显示登录提示。

答案2

现在我找到了答案。

RewriteCond %{HTTPS} off 不工作,必须更换RewriteCond %{HTTPS} !on

相关内容