【问题标题】:Apache servers redirect to one specific serverApache 服务器重定向到一台特定的服务器
【发布时间】:2021-04-29 13:06:17
【问题描述】:

是否有任何解决方案可以将所有这些 url 重定向到一个 url 而无需创建特定服务器,然后将其从该服务器重定向到我想要的服务器。我想用.htaccess 做到这一点,但由于该服务器不存在,那么我如何在那里执行 htaccess...

http://example.com  -----|
http://www.example.com --|-------- to: https://www.example.com
https://example.com -----|

.conf 文件

<VirtualHost *:80>
    ServerName example.com
    Redirect / https://www.example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example.com
    Redirect / https://www.example.com
</VirtualHost>

<IfModule mod_ssl.c>
    <VirtualHost *:443>
        DocumentRoot /var/www/example.com
        ServerName www.example.com

        SSLEngine on
        SSLCertificateFile       ...
        SSLCertificateKeyFile    ...

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

【问题讨论】:

  • 您的意思是您不想创建 3 个VirtualHost 条目?
  • 我想知道是否有更简单的选择,比如使用 htaccess... 而不是创建 3 个条目
  • 那么您仍然需要 2 个条目。一个用于端口443 ,另一个用于80后。当然.htaccess可以处理像http -&gt; httpsnon-www to www这样的休息
  • 我必须为每个条目创建 .htaccess 吗?
  • 不,只是一个.htaccess

标签: apache .htaccess webserver apache2


【解决方案1】:

您的 htaccess 应该如下所示:

RewriteCond %{HTTP_HOST} !^www\.example\.com
RewriteRule ^(.*)$ https://www.example.com/$1 [R=permanent,L]

RewriteCond %{HTTPS}  !=on 
RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] 

可能需要根据您的网络设置方式更改配置,例如,如果您的 apache 前面有一个负载均衡器,或者根据您正在运行的 apache 版本。

【讨论】:

    猜你喜欢
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2019-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    相关资源
    最近更新 更多