【问题标题】:apache redrict 301 from https://www.domain.com to https://domain.comapache 将 301 从 https://www.domain.com 重定向到 https://domain.com
【发布时间】:2013-08-20 02:35:39
【问题描述】:

我尝试了几个小时来重新编辑 https://www。域 .com 到 https:// 域 .com 与 301。

我有域 .com 的证书,但没有 www 的通配符。 .com 域。

我尝试了以下方法:

RewriteEngine On
RewriteCond        %{HTTPS}        =on
RewriteCond        %{HTTP_HOST}    ^www\.meinedomain\.de$ [NC]
RewriteRule        ^(.*)            https://meinedomain.de/$1 [L,R=301]

和

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

和

Redirect 301 / https://mineyourmind.de/

这些都不起作用。有什么想法可能是错的吗?我已将它直接添加到 apache 设置中,它对 http://www 非常有用。 domain .com 和 http:// domain .com 到 https:// domain .com 但不适用于 https:// www。 .com 域。


目前我使用以下配置。每个重定向都可以正常工作,而不是 https://www.mineyourmind.de 到 https://mineyourmind.de

这样的文件应该是什么样子?

<VirtualHost *:80>
    ServerName mineyourmind.de
    ServerAlias www.mineyourmind.de
    Redirect 301 / https://mineyourmind.de/ 
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin **
    DocumentRoot /var/www/mineyourmind
    ServerName mineyourmind.de
    ServerAlias www.mineyourmind.de
    SSLEngine on
    SSLCertificateFile    /etc/**
    SSLCertificateKeyFile /etc/**
    SSLCertificateChainFile /etc/**
    SSLCACertificateFile /etc/**

    RewriteEngine On
    RewriteCond %{HTTPS} on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        deny from all
    </Directory>
    <Directory /var/www/mineyourmind/>
        Options -Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

第二次编辑:

<VirtualHost *:80>
    ServerName mineyourmind.de
    ServerAlias www.mineyourmind.de
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.mineyourmind\.de$ [NC]
    RewriteRule (.*) https://mineyourmind.de%{REQUEST_URI} [R=301,L]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin **
    DocumentRoot /var/www/mineyourmind
    ServerName mineyourmind.de
    ServerAlias www.mineyourmind.de
    SSLEngine on
    SSLCertificateFile    /etc/apache2/**
    SSLCertificateKeyFile /etc/apache2/ssl/**
    SSLCertificateChainFile /etc/apache2/ssl/**
    SSLCACertificateFile /etc/apache2/ssl/**
    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.mineyourmind\.de$ [NC]
    RewriteRule (.*) https://mineyourmind.de%{REQUEST_URI} [R=301,L]
    <Directory />
        Options FollowSymLinks
        AllowOverride None
        Order deny,allow
        deny from all
    </Directory>
    <Directory /var/www/mineyourmind/>
        Options -Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

【问题讨论】:

    标签: apache http ssl https rewrite


    【解决方案1】:

    如果您请求https://www.meinedomain.de/ 并且您的证书未获得www.meinedomain.de 的授权,那么您将收到关于您如何重定向的安全警告。重定向只能在他们接受安全异常后发生。

    确保您已将这些规则放入 SSL 虚拟主机的配置中,而不是非 SSL 配置中。 Apache 通常将它们分开。如果这仍然不起作用,您可以尝试将其放入文档根目录的 htaccess 文件中:

    RewriteEngine On
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^www\.meinedomain\.de$ [NC]
    RewriteRule (.*) https://meinedomain.de%{REQUEST_URI} [R=301,L]
    

    【讨论】:

    • 仍然无法正常工作。在 apache ssl 站点配置和 .htaccess 中尝试过。 Oc 我因为证书而收到警告,但如果我按继续,它仍然不会重新编辑。
    • 我升级了我的 SSL 证书,现在支持 www.mineyourmind.de。但它仍然无法正常工作。我必须创建 4 个虚拟主机吗? mineyourmind.de - www.mineyourmind.de - ssl_mineyourmind.de - ssl_www.mineoyurmind.de ?
    • @user2693017 不,您可以使用ServerAlias 指令并包含您希望该虚拟主机处理的任何主机名。所以你需要一个处理www.meinedomain.de和meinedomain.de的非SSL虚拟主机,然后创建一个也处理www.meinedomain.de和meinedomain.de的SSL虚拟主机。
    • @user2693017 您的非 SSL 虚拟主机需要规则。您需要将我的答案中的规则添加到 SSL 和非 SSL 虚拟主机
    • 规则是什么意思?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 2012-02-04
    • 2011-01-11
    相关资源
    最近更新 更多