添加垃圾也没有任何作用。
这表明.htaccess
根本没有处理文件。您需要设置AllowOverride All
在适当的<Directory>
主服务器配置中的容器(或<VirtualHost>
容器),以启用对每个目录的分析.htaccess
文件(允许.htaccess
覆盖服务器配置的指令)。
这个FollowSymLinks
(或SymLinksIfOwnerMatch
) 还需要启用选项才能使mod\\u rewrite正常工作。(尽管FollowSymLinks
默认情况下已启用。)可以在服务器配置或.htaccess
文件
例如:
<Directory /var/www/directory_name>
AllowOverride All
Options +FollowSymLinks
# etc...
Require all granted
</Directory>
在哪里
/var/www/directory_name
是你的
DocumentRoot
以及
.htaccess
文件
严格地说,你只需要AllowOverride FileInfo
在中启用mod\\u rewrite的使用.htaccess
. 但是,如果以后使用授权指令、目录列表等,则需要启用更多组。
一如既往,在对服务器配置进行任何更改后,需要重新启动Apache才能使更改生效。
UPDATE: 也许我的SSL conf有问题?
由于您正在将服务器配置中的所有内容重定向到HTTPS,因此需要应用以上内容<Directory>
节到您的<VirtualHost *:443>
容器将此应用于<VirtualHost *:80>
(即HTTP)不是必需的,在此处不起任何作用。
旁白:
RewriteEngine on
RewriteCond %{SERVER_NAME} =domain.com [OR]
RewriteCond %{SERVER_NAME} =www.domain.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
您的HTTP到HTTPS重定向过于复杂,可以简化为单个mod\\u别名
Redirect
指令-此处不需要mod\\u重写的额外开销。
您还应该在此处规范化主机名(www或非www)。
例如:
Redirect 301 / https://www.example.com/