CentOS - Apache HTTPS 不读取 htaccess

CentOS - Apache HTTPS 不读取 htaccess

我在 CentOS 上的 apache 上遇到了一个重写问题。

如果我从 HTTP 加载我的网站,它工作正常。重写规则有效。一旦我将其更改为 HTTPS,重写规则就不起作用了。

经过一些测试和浏览线程后,我意识到如果从 HTTPS 访问网站,apache 就不会拾取 .htaccess 文件。

我所做的测试是在 .htaccess 文件中插入“deny from all”。当我访问http://my.domain.com它显示禁止错误。当我通过访问https://my.domain.com我仍然可以加载该页面,这意味着 .htaccess 未被读取。

我检查了 httpd.conf 和 ssl.conf,并确保已设置 AllowOverride All。还有什么地方是我可能遗漏的吗?

这是我的 httpd.conf 配置:

<VirtualHost *:443>
    SSLEngine On
    SSLCertificateFile /etc/httpd/ssl/my.domain.crt
    SSLCertificateKeyFile /etc/httpd/ssl/my.domain.key
    SSLCACertificateFile /etc/httpd/ssl/caroot.crt

     ServerAdmin [email protected]
     ServerName my.domain.com
     ServerAlias my.domain.com
     DocumentRoot /var/www/my.domain.com/public_html/
        <Directory />
            Options FollowSymLinks
            AllowOverride All
        </Directory>
        <Directory /var/www/my.domain.com/public_html/>
            Options Indexes FollowSymLinks ExecCGI MultiViews
            #RewriteEngine on 
            AllowOverride All
            Order allow,deny
            allow from all
        </Directory>

     ErrorLog /var/www/my.domain.com/logs/ssl-error.log
     CustomLog /var/www/my.domain.com/logs/ssl-access.log combined
</VirtualHost>

下面是我的 .htaccess 文件,位于 /var/www/my.domain.com/public_html/ 中

AddType text/x-component .htc
Options FollowSymLinks
<IfModule mod_rewrite.c>
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.php -f 
    RewriteRule ^(.*)$ $1.php
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule> 

以下是端口 80 的配置:

<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName my.domain.com
     ServerAlias my.domain.com
     DocumentRoot /var/www/my.domain.com/public_html/
        <Directory />
                Options FollowSymLinks
                AllowOverride All
        </Directory>
        <Directory /var/www/my.domain.com/public_html/>
                Options Indexes FollowSymLinks ExecCGI MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

     ErrorLog /var/www/my.domain.com/logs/error.log
     CustomLog /var/www/my.domain.com/logs/access.log combined
</VirtualHost>

答案1

然后将我的评论变成答案:

是否有其他默认虚拟主机?由于您显示的所有信息似乎都是正确的,我怀疑还有其他因素阻碍了它正常工作。最有可能的是默认配置文件和/或其默认设置。

检查 ssl.conf 中的默认设置,尤其是 ServerName 和 ServerAlias。还有 httpd.conf

答案2

确保您的全局 Apache 配置包含以下行:

AccessFileName .htaccess

相关内容