如何用.htaccess将固定目录下的可变路径重定向至同名外部URL
用.htaccess实现指定目录的动态URL重定向
没问题,这个需求用Apache的mod_rewrite模块就能轻松搞定,我给你具体的规则和细节说明:
核心规则(放在example.com的根目录.htaccess中)
首先确保你的Apache服务器开启了mod_rewrite模块,然后在根目录的.htaccess文件里添加以下代码:
RewriteEngine On # 匹配example.com/folder/后面的所有动态内容,并重定向到example.net对应的路径 RewriteRule ^folder/(.*)$ http://example.net/$1 [R=301,L]
规则详解
RewriteEngine On:开启URL重写引擎,这是所有重写规则的前提^folder/(.*)$:正则匹配模式,^表示URL的起始位置,folder/是你指定的固定目录,(.*)是捕获组,用来匹配后面所有动态变化的different-name部分(包括带子路径的情况,比如folder/abc/123也会被完整捕获)http://example.net/$1:重定向的目标URL,$1对应前面捕获组拿到的动态内容,这样就把different-name完整传递过去了[R=301,L]:标记部分,R=301表示永久重定向(对SEO友好,推荐正式环境使用),如果只是临时测试可以改成R=302;L表示这是最后一条规则,匹配后就停止处理后续规则
备选方案(如果.htaccess放在folder目录中)
如果你把.htaccess直接放在example.com/folder/目录下,规则可以简化成:
RewriteEngine On RewriteRule ^(.*)$ http://example.net/$1 [R=301,L]
这样所有访问folder目录下的内容都会被重定向到example.net对应的路径。
注意事项
- 测试301重定向时,记得清空浏览器缓存,因为浏览器会缓存永久重定向的结果,可能导致测试不生效
- 确认你的服务器允许使用
.htaccess文件(需要Apache配置中设置AllowOverride All相关权限)
内容的提问来源于stack exchange,提问作者Манол А. Иваниев
相关产品推荐
相关产品推荐

