Drupal 7站点WordPress子目录部署后URL去子目录优化咨询
解决Drupal根目录下WordPress子目录的URL隐藏问题
没问题,这个需求完全可以通过调整WordPress配置和Drupal根目录的.htaccess来实现,既不用改动现有Drupal的URL,也能让WordPress的内容以根域名直接访问。具体操作步骤如下:
1. 先调整WordPress的后台URL设置
- 先登录你的WordPress后台(临时访问地址:
http://www.example.com/subfolder/wp-admin) - 进入设置 > 常规页面:
- 「WordPress地址(URL)」保留为
http://www.example.com/subfolder(这是实际安装路径,绝对不能改) - 「站点地址(URL)」修改为
http://www.example.com(这是你希望前端显示的URL)
- 「WordPress地址(URL)」保留为
- 保存设置后,可能会出现后台无法访问的情况,别担心,接下来我们通过配置文件锁定设置。
2. 修改WordPress的wp-config.php文件
- 登录服务器,找到
/var/www/html/subfolder/wp-config.php文件 - 在文件的最后一行(也就是
require_once(ABSPATH . 'wp-settings.php');之前)添加以下代码:
define('WP_HOME','http://www.example.com'); define('WP_SITEURL','http://www.example.com/subfolder');
- 保存文件后,WordPress的URL设置就被锁定了,这时候你就能重新正常访问后台了。
3. 修改Drupal根目录的.htaccess(核心重写规则)
- 打开Drupal根目录的
.htaccess文件(路径:/var/www/html/.htaccess) - 在Drupal自带的重写规则(比如
# Rewrite URLs of the form 'x' to 'index.php?q=x'那一段)之前,添加以下重写规则:
# 转发WordPress的.blog.html结尾请求到子目录 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*\.blog\.html)$ subfolder/$1 [L]
- 规则说明:这两行
RewriteCond是为了确保只转发那些不存在的文件/目录请求(避免影响Drupal本身的页面),然后把所有以.blog.html结尾的URL,悄悄转发到subfolder目录下对应的内容。
4. 测试与验证
- 访问
http://www.example.com/my-blog-1.blog.html,确认能正常打开对应的WordPress文章 - 访问Drupal原有的页面(比如
http://www.example.com/contact),确保没有受到影响 - 登录WordPress后台发布一篇新文章,检查生成的URL是否自动为
http://www.example.com/new-blog.blog.html格式
额外注意事项
- 确保你的Apache服务器已经开启了
mod_rewrite模块,如果没开,执行sudo a2enmod rewrite然后重启Apache服务 - 清除Drupal和WordPress的缓存,避免旧的URL缓存干扰测试
- 如果之后WordPress还有其他URL格式(比如分类页、标签页),可以根据需要调整
.htaccess里的RewriteRule匹配规则
内容的提问来源于stack exchange,提问作者jmu
相关产品推荐
相关产品推荐

