You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress多站点部署至Sharkasp主机后跳转异常求助

WordPress多站点部署Sharkasp主机子站点跳转主站解决方法

1. 修正web.config的重写规则

Sharkasp基于IIS服务器,必须确保web.config的多站点重写规则适配环境,替换成以下代码(子目录型多站点适用):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="WordPress Rule 1" stopProcessing="true">
          <match url="^index\.php$" ignoreCase="false" />
          <action type="None" />
        </rule>
        <rule name="WordPress Rule 2" stopProcessing="true">
          <match url="^([_0-9a-zA-Z-]+/)?files/(.+)" ignoreCase="false" />
          <action type="Rewrite" url="wp-includes/ms-files.php?file={R:2}" appendQueryString="false" />
        </rule>
        <rule name="WordPress Rule 3" stopProcessing="true">
          <match url="^([_0-9a-zA-Z-]+/)?wp-admin$" ignoreCase="false" />
          <action type="Redirect" url="{R:1}wp-admin/" redirectType="Permanent" />
        </rule>
        <rule name="WordPress Rule 4" stopProcessing="true">
          <match url="^" ignoreCase="false" />
          <conditions logicalGrouping="MatchAny">
            <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" />
            <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" />
          </conditions>
          <action type="None" />
        </rule>
        <rule name="WordPress Rule 5" stopProcessing="true">
          <match url="^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*)" ignoreCase="false" />
          <action type="Rewrite" url="{R:2}" />
        </rule>
        <rule name="WordPress Rule 6" stopProcessing="true">
          <match url="^([_0-9a-zA-Z-]+/)?(.*\.php)$" ignoreCase="false" />
          <action type="Rewrite" url="{R:2}" />
        </rule>
        <rule name="WordPress Rule 7" stopProcessing="true">
          <match url="." ignoreCase="false" />
          <action type="Rewrite" url="index.php" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

若是子域名型多站点,删除规则中所有^([_0-9a-zA-Z-]+/)?片段即可。

2. 确认wp-config.php的多站点配置

检查以下配置项,确保与服务器域名完全匹配:

/* 多站点核心配置 */
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // 子目录站点填false,子域名填true
define('DOMAIN_CURRENT_SITE', '你的服务器域名'); // 例:example.com,不要加http/https前缀
define('PATH_CURRENT_SITE', '/'); // 主站在根目录则填/,否则填对应路径
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

注意:必须删除本地环境遗留的域名配置,替换为服务器实际域名。

3. 批量更新数据库URL信息

登录主机的phpMyAdmin,执行以下SQL语句(替换http://本地域名和https://服务器域名为实际值,表前缀非wp_则同步替换):

-- 更新站点基础URL
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://本地域名', 'https://服务器域名') WHERE option_name IN ('siteurl', 'home');

-- 更新多站点域名记录
UPDATE wp_blogs SET domain = REPLACE(domain, '本地域名', '服务器域名');
UPDATE wp_site SET domain = REPLACE(domain, '本地域名', '服务器域名');

-- 更新文章内容及链接中的旧域名
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://本地域名', 'https://服务器域名');
UPDATE wp_posts SET guid = REPLACE(guid, 'http://本地域名', 'https://服务器域名');

4. 验证主机IIS重写模块状态

Sharkasp部分套餐默认未开启IIS URL重写模块,登录主机控制面板查看是否启用该功能;若未开启,直接联系主机商协助开启——无此模块,web.config重写规则完全失效。

5. 清除缓存

  • 登录WordPress后台,清空所有缓存插件的缓存数据
  • 清空浏览器缓存,或使用无痕模式测试子站点访问

内容的提问来源于stack exchange,提问作者CertifiedCoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 22:45:21