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
相关产品推荐
相关产品推荐

