Apache Rewrite规则设置:URL结构转换需求咨询
Apache Rewrite规则:旧附件URL到新路径的转换
嘿,这个需求用Apache的mod_rewrite模块就能完美解决,核心是用正则精准提取你需要的数字ID,下面是具体的实现步骤和解释:
前置准备
首先得确保你的Apache已经启用了mod_rewrite模块,并且在对应的配置(虚拟主机配置文件或者站点根目录的.htaccess)里开启重写引擎:
RewriteEngine On
如果是用.htaccess,还要保证服务器配置里该目录的AllowOverride设置包含FileInfo(或者直接设为All),否则规则不会生效。
核心重写规则
直接在开启引擎的下面添加这条规则就行:
# 匹配旧URL并提取数字ID,永久重定向到新URL RewriteRule ^forums/attachments/[^/]+/(\d+)d.*$ https://www.example.com/community/attachments/$1/ [R=301,L]
规则细节解释
我来拆解一下这条规则的每个部分,方便你理解和调整:
^forums/attachments/[^/]+/:匹配旧URL开头的固定路径,[^/]+用来匹配中间任意的文件夹名称(比如你例子里的peasgai-emagazine),不管这个文件夹名是什么都能匹配到(\d+)d:这是最关键的捕获组!(\d+)会抓取所有连续的数字(也就是你要的277230),后面的d用来匹配数字之后的固定字符(对应你旧URL里277230d1518788091里的d).*$:匹配URL剩下的所有内容,确保不管后面跟着多长的文件名或者参数,都能被正确匹配https://www.example.com/community/attachments/$1/:新的目标URL,$1会自动替换成前面捕获到的数字ID[R=301,L]:R=301表示永久重定向,对SEO友好;L表示这是最后一条规则,一旦匹配成功就不再处理后续的重写规则
测试建议
- 先把
R=301改成R=302做临时重定向测试,确认所有旧URL都能正确跳转到新路径后,再改回301 - 可以手动构造几个不同的旧URL测试,比如换个文件夹名或者数字ID,看看是否都能正确提取并跳转
内容的提问来源于stack exchange,提问作者Fernando
相关产品推荐
相关产品推荐

