如何用.htaccess实现跨域名重定向并保留指定文件夹结构?
解决.htaccess重定向时保留特定文件夹结构的问题
你的问题核心在于RewriteRule的正则匹配规则写错了——你原规则里的^example/(.*)$只会匹配以example/开头的路径,但你实际需要匹配的是foldername/开头的请求,这导致原规则根本没触发,进而出现目标URL丢失foldername/的情况。
修改后的正确规则如下:
RewriteEngine On # 匹配来自www.example1.org的请求 RewriteCond %{HTTP_HOST} ^www\.example1\.org$ [NC] # 匹配以foldername/开头的所有路径,捕获后续内容 RewriteRule ^foldername/(.*)$ https://www.example2.org/foldername/$1 [R=301,L]
关键说明:
^foldername/(.*)$:精准匹配URL中以foldername/开头的部分,(.*)会捕获该文件夹之后的所有路径内容(包括子文件夹、文件名等)。https://www.example2.org/foldername/$1:将捕获到的路径内容$1追加到目标域名的foldername/之后,确保完整路径被保留。- 测试阶段建议将
R=301改为R=302,避免浏览器缓存永久重定向规则影响测试结果,确认无误后再改回301。 - 确保服务器已启用
mod_rewrite模块,且.htaccess文件放置在网站根目录下。
内容的提问来源于stack exchange,提问作者Dipen Patel
相关产品推荐
相关产品推荐

