如何用.htaccess实现含指定字符串的URL重定向并保留路径参数
解决URL重定向:移除路径中的特定字符串并跳转到子域名
没问题,这在Apache的.htaccess文件里用mod_rewrite模块就能轻松实现。以下是针对你需求的完整配置,我会逐行解释清楚:
# 开启URL重写引擎 RewriteEngine On # 匹配包含/foo/的路径,重定向到子域名并移除/foo/部分 RewriteRule ^foo/(.*)$ http://sub.example.com/$1 [R=301,L]
规则详解:
RewriteEngine On:必须先开启Apache的重写引擎,否则所有重写规则都不会生效。^foo/(.*)$:这是匹配规则,意思是:^:匹配URL路径的起始位置foo/:精确匹配路径开头的/foo/部分(注意这里的^已经对应路径的开头,所以不需要写前面的/)(.*):捕获foo/之后的所有内容(包括后续的子路径、文件名等),这个捕获的内容会用$1来引用
http://sub.example.com/$1:这是目标URL,把原域名替换成sub.example.com,然后拼接上刚才捕获的$1内容(也就是移除/foo/之后的剩余路径)[R=301,L]:这是规则的标记:R=301:表示这是永久重定向(如果只是临时测试,可以换成R=302临时重定向),搜索引擎会更新索引到新URLL:表示这是最后一条规则,匹配到之后就停止处理后续的重写规则,避免冲突
效果验证:
当用户访问http://example.com/foo/bar/123/456.jpg时,会自动跳转到http://sub.example.com/bar/123/456.jpg,完全符合你的需求。
注意事项:
- 确保你的Apache服务器已经启用了
mod_rewrite模块(大部分主流主机默认都开启了,如果不确定可以联系主机商) - 确保服务器的虚拟主机配置中允许
.htaccess生效,需要设置AllowOverride All(如果是自己搭建的服务器,要检查Apache的站点配置文件) - 如果你的网站使用HTTPS,记得把目标URL里的
http换成https
内容的提问来源于stack exchange,提问作者Rick H
相关产品推荐
相关产品推荐

