修复WordPress多站点与YOURLS共存的.htaccess重写规则错误
解决WordPress多站点与YOURLS的.htaccess规则冲突问题
核心思路是基于域名和请求路径分流:让Apache优先识别sub.domain.com下属于YOURLS的请求,转发到yourls目录处理,剩余请求交给WordPress多站点。
完整的.htaccess配置代码
将以下代码替换public_html目录下的.htaccess内容:
RewriteEngine On # ---------- YOURLS 规则(优先处理)---------- # 仅对sub.domain.com生效 RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ # 排除WordPress核心路径,避免YOURLS接管WP后台/静态文件 RewriteCond %{REQUEST_URI} !^/(wp-admin|wp-content|wp-includes|xmlrpc\.php|wp-.*\.php)$ # 如果请求的文件/目录不存在,交给YOURLS处理(匹配短链和后台) RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ yourls/index.php [L] # 直接访问yourls目录下的文件时,正常跳转 RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ RewriteRule ^yourls/(.*)$ yourls/$1 [L] # ---------- WordPress 多站点规则(子域名模式)---------- RewriteCond %{HTTP_HOST} ^sub\.domain\.com$ RewriteBase / RewriteRule ^index\.php$ - [L] # 允许直接访问WP的静态文件和目录 RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] # 剩余请求交给WP处理 RewriteRule . /index.php [L] # 如果你的WP多站点是子目录模式,替换上面的WP规则为官方子目录模式规则
配套配置调整
YOURLS 配置修改:
打开public_html/yourls/config.php,修改以下参数:define('YOURLS_SITE', 'https://sub.domain.com'); define('YOURLS_PATH', '/'); // 注意是根路径,因为通过sub.domain.com直接访问WordPress 配置确认:
- 确保WP多站点中sub.domain.com的站点URL设置为
https://sub.domain.com - 如果之前的WP多站点规则是官方生成的,替换时注意保持匹配你的站点模式(子域名/子目录)
- 确保WP多站点中sub.domain.com的站点URL设置为
测试注意事项
- 清除浏览器缓存或使用无痕模式访问,避免旧缓存干扰
- 分别测试:
- YOURLS后台:
sub.domain.com/admin - YOURLS短链:比如你创建的
sub.domain.com/test - WP站点:
sub.domain.com及WP后台sub.domain.com/wp-admin
- YOURLS后台:
内容的提问来源于stack exchange,提问作者ansQuestion
相关产品推荐
相关产品推荐

