首页 > 解决方案 > apache mod_rewrite 让我们加密不重定向

问题描述

我正在编写一个虚拟主机以允许让我们加密通过 http 和请求到 https 的任何其他请求来访问文件

这是我完整的虚拟主机配置

<VirtualHost *:80>

    ServerAdmin admin@{{ domain_name }}
    ServerName {{ domain_name }}
    ServerAlias {{ domain_name }}
    DocumentRoot /var/www/letsencrypt

    <Directory /var/www/letsencrypt>
        <IfModule mod_rewrite.c>
            RewriteEngine On
            RewriteCond ^/.well-known/acme-challenge$ [NC]
            RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
        </IfModule>
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

当我评论我的 RewriteCond 时,我被重定向到 https,但我无法让我的 RewriteCond 工作。

标签: apachemod-rewritelets-encrypt

解决方案


我的 vhost conf 包含两个错误,一个在RewriteCondconf 中的重写位置上,一个在 rewrite 的位置上。

这里是正常运行的:

<VirtualHost *:80>

    ServerAdmin admin@{{ domain_name }}
    ServerName {{ domain_name }}
    ServerAlias {{ domain_name }}
    DocumentRoot /var/www/letsencrypt

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond  %{REQUEST_URI} !^/.well-known/acme-challenge [NC]
        RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
    </IfModule>

    <Directory /var/www/letsencrypt>
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error-http-{{ domain_name }}.log
    CustomLog ${APACHE_LOG_DIR}/access-http-{{ domain_name }}.log combined

</VirtualHost>

推荐阅读