同一Laravel目录下多域名对应独立WordPress站点路由配置问题
多域名下Laravel与独立WordPress目录的隔离配置方案
一、修改public目录下的.htaccess规则
在Laravel根目录的.htaccess文件中,保留原有Laravel重写规则的同时,新增域名匹配转发与跨域拦截规则,实现不同域名的/blog路径对应到独立WP目录:
# 保留Laravel默认重写规则 <IfModule mod_rewrite.c> RewriteEngine On RewriteRule ^(.*)$ public/$1 [L] </IfModule> # 新增多域名WP目录控制规则 <IfModule mod_rewrite.c> RewriteEngine On # 拦截跨域名直接访问WP源目录 RewriteCond %{HTTP_HOST} !^domain1\.com$ RewriteRule ^blog1/(.*)$ - [R=403,L] RewriteCond %{HTTP_HOST} !^domain2\.com$ RewriteRule ^blog2/(.*)$ - [R=403,L] RewriteCond %{HTTP_HOST} !^domain3\.com$ RewriteRule ^blog3/(.*)$ - [R=403,L] # 转发对应域名的/blog请求到目标WP目录 RewriteCond %{HTTP_HOST} ^domain1\.com$ RewriteRule ^blog/(.*)$ blog1/$1 [L] RewriteCond %{HTTP_HOST} ^domain2\.com$ RewriteRule ^blog/(.*)$ blog2/$1 [L] RewriteCond %{HTTP_HOST} ^domain3\.com$ RewriteRule ^blog/(.*)$ blog3/$1 [L] </IfModule>
注意替换domain1.com、domain2.com、domain3.com为你的实际域名,规则顺序不可调换:先拦截跨域访问,再做路径转发。
二、配置每个WordPress站点的wp-config.php
分别进入blog1、blog2、blog3目录,修改各自的wp-config.php,设置正确的站点URL并适配/blog路径:
// 替换为对应域名的/blog路径 define('WP_HOME', 'https://domain1.com/blog'); define('WP_SITEURL', 'https://domain1.com/blog'); // 强制HTTPS访问(按需开启) define('FORCE_SSL_ADMIN', true); if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { $_SERVER['HTTPS'] = 'on'; } // 禁止生成跨域资源链接 remove_filter('script_loader_src', 'wp_scripts_add_suffix'); remove_filter('style_loader_src', 'wp_styles_add_suffix');
每个站点对应修改WP_HOME和WP_SITEURL的域名,比如domain2站点就改成https://domain2.com/blog。
之后登录每个WP后台,进入「设置-固定链接」,选择任意非默认的链接结构(如「文章名」)并保存,让WP自动更新重写规则,确保/blog/xxx这类子路径能正常解析。
三、Laravel路由冲突规避
确认Laravel的路由文件中没有定义/blog相关的路由规则,避免与WordPress的路径产生冲突。如果之前存在相关路由,需删除或调整优先级。
四、隔离效果验证
- 访问
domain1.com/blog应正常加载blog1的内容,domain2.com/blog加载blog2,以此类推; - 尝试用
domain2.com/blog1访问,应返回403禁止访问,其他跨域名访问对应WP源目录的请求也需被拦截,确保站点完全隔离。
内容的提问来源于stack exchange,提问作者sdet.ro
相关产品推荐
相关产品推荐

