狼魄 發表於 2025-11-21 12:21:14

Apache服务器IP自动跳转域名的问题及解决方案

<div id="navCategory"><h5 class="catalogue">目录</h5><ul class="first_class_ul"><li><a href="#_label0">​​问题背景​​</a></li><li><a href="#_label1">解决方案​​</a></li><ul class="second_class_ul"><li><a href="#_lab2_1_0">方法 1:修改 httpd-vhosts.conf(推荐)​​</a></li><ul class="third_class_ul"><li><a href="#_label3_1_0_0">步骤 1:编辑虚拟主机配置文件​​</a></li><li><a href="#_label3_1_0_1">步骤 2:确保关键模块已启用​​</a></li><li><a href="#_label3_1_0_2">步骤 3:重启 Apache​​</a></li></ul><li><a href="#_lab2_1_1">方法 2:使用 .htaccess 文件</a></li><ul class="third_class_ul"></ul></ul></ul></div><p class="maodian"><a name="_label0"></a></p><h2>​​问题背景​​</h2>
<p>在 XAMPP 环境中,我们经常需要让用户访问 ​​服务器 IP​​ 时自动跳转到 ​​绑定的域名​​(如 https://example.com),同时确保 HTTPS 安全访问。本教程将详细介绍如何通过 Apache 虚拟主机配置实现这一功能,并解决常见问题。</p>
<p class="maodian"><a name="_label1"></a></p><h2>解决方案​​</h2>
<p class="maodian"><a name="_lab2_1_0"></a></p><h3>方法 1:修改 httpd-vhosts.conf(推荐)​​</h3>
<p class="maodian"><a name="_label3_1_0_0"></a></p><h4>步骤 1:编辑虚拟主机配置文件​​</h4>
<p>路径:</p>
<div class="jb51code"><pre class="brush:bash;">Windows​​: C:\xxx\apache\conf\extra\httpd-vhosts.conf
Linux​​: /opt/lampp/etc/extra/httpd-vhosts.conf</pre></div>
<p>在文件末尾添加以下配置(替换 123.123.123.123 为你的服务器 IP,example.cn 为你的域名):</p>
<div class="jb51code"><pre class="brush:plain;"># 强制 IP 跳转到域名(HTTP)
&lt;VirtualHost 123.123.123.123:80&gt;
    ServerName 123.123.123.123
    Redirect permanent / https://example.cn/
&lt;/VirtualHost&gt;
# 强制 IP 跳转到域名(HTTPS)
&lt;VirtualHost 123.123.123.123:443&gt;
    ServerName 123.123.123.123
    SSLEngine on
    SSLCertificateFile "conf/ssl/example.cn.crt"
    SSLCertificateKeyFile "conf/ssl/example.cn.key"
    Redirect permanent / https://example.cn/
&lt;/VirtualHost&gt;
# 默认域名配置(HTTP → HTTPS)
&lt;VirtualHost *:80&gt;
    ServerName example.cn
    ServerAlias www.example.cn
    Redirect permanent / https://example.cn/
&lt;/VirtualHost&gt;
# 默认域名配置(HTTPS)
&lt;VirtualHost *:443&gt;
    ServerName example.cn
    ServerAlias www.example.cn
    DocumentRoot "/opt/lampp/htdocs/example"
    SSLEngine on
    SSLCertificateFile "conf/ssl/example.cn.crt"
    SSLCertificateKeyFile "conf/ssl/example.cn.key"
    &lt;Directory "/opt/lampp/htdocs/gsglbwg"&gt;
      Options Indexes FollowSymLinks
      DirectoryIndex index.html index.php
      AllowOverride All
      Require all granted
    &lt;/Directory&gt;
&lt;/VirtualHost&gt;</pre></div>
<p class="maodian"><a name="_label3_1_0_1"></a></p><h4>步骤 2:确保关键模块已启用​​</h4>
<p>在 httpd.conf 中取消以下注释(若未启用):</p>
<div class="jb51code"><pre class="brush:plain;">LoadModule rewrite_module modules/mod_rewrite.so
LoadModule alias_module modules/mod_alias.so
LoadModule ssl_module modules/mod_ssl.so</pre></div>
<p class="maodian"><a name="_label3_1_0_2"></a></p><h4>步骤 3:重启 Apache​​</h4>
<div class="jb51code"><pre class="brush:bash;">sudo /opt/lampp/lampp restart# Linux
# 或在 Windows 使用 XAMPP 控制面板重启</pre></div>
<p class="maodian"><a name="_lab2_1_1"></a></p><h3>方法 2:使用 .htaccess 文件</h3>
<p>如果无法修改虚拟主机配置,可在网站根目录(如 /htdocs/example)创建 .htaccess 文件:</p>
<div class="jb51code"><pre class="brush:plain;">RewriteEngine On
RewriteCond %{HTTP_HOST} ^123\.123\.123\.123$
RewriteRule ^(.*)$ https://example.cn/$1 </pre></div>
頁: [1]
查看完整版本: Apache服务器IP自动跳转域名的问题及解决方案