使用.htaccess实现同IP域名重写,如何保留地址栏原URL?
解决WordPress同域名别名内部重写保留原URL问题
问题分析
你当前的规则会改变地址栏,核心原因是RewriteRule中使用了完整的绝对URL(包含https://域名)——哪怕没加R=301标记,Apache也会默认触发外部跳转,导致浏览器地址栏切换到目标域名。要实现地址栏不变的内部重写,必须避免指定完整域名,直接重写请求路径即可。
修改后的.htaccess规则
把原规则替换为以下内容,且务必放在WordPress自带的Rewrite规则块之前:
# DOMAIN REWRITE papatest.purplepanda.be/final-test RewriteEngine On # 匹配请求主机为papatest.purplepanda.be RewriteCond %{HTTP_HOST} ^papatest\.purplepanda\.be$ [NC] # 匹配请求路径为/final-test(允许结尾带/) RewriteCond %{REQUEST_URI} ^/final-test/?$ [NC] # 内部重写至目标页面,不改变地址栏 RewriteRule ^ /blackbear-test-page/ [L]
关键注意事项
- 移除目标URL中的域名部分,只保留路径
/blackbear-test-page/,Apache会将其识别为内部重写,不会向浏览器发送跳转响应。 - 拆分原有的合并匹配逻辑为两个独立的
RewriteCond,规则更清晰,后续添加其他域名规则也更方便。 - 自定义规则必须放在
# BEGIN WordPress和# END WordPress注释块之前,否则会被WordPress的默认规则覆盖失效。
验证方式
保存.htaccess后,访问papatest.purplepanda.be/final-test,确认地址栏仍显示原URL,同时页面内容与/blackbear-test-page/一致即可。
内容的提问来源于stack exchange,提问作者Gert-Jan Feijens
相关产品推荐
相关产品推荐

