如何通过Apache Rewrite Rules实现AEM资产URL缩短?
AEM Apache Rewrite 短路径映射解决方案
核心需求匹配
你需要实现的是对外暴露/document/[可选子层级]/文件名格式的短URL,内部映射到AEM DAM实际存储的长路径/content/dam/app/document/[可选子层级]/文件名.docx,以下是可直接使用的规则及说明:
规则配置
首先确保Apache已启用mod_rewrite模块,在虚拟主机配置或.htaccess文件中添加如下内容:
基础版本(仅处理无后缀的/document/路径请求)
RewriteEngine On # 精准匹配所有以/document/开头的请求 RewriteCond %{REQUEST_URI} ^/document/ # 捕获路径后补全AEM前缀与docx后缀 RewriteRule ^/document/(.*)$ /content/dam/app/document/$1.docx [L,PT]
参数说明
[L]:匹配到当前规则后停止执行后续Rewrite规则,避免规则冲突[PT]:如果你的Apache通过mod_proxy将请求转发给后端AEM实例,需要添加该标记让重写后的路径可被代理模块识别,纯内部重写场景可省略
优化版本(排除带后缀的请求,避免误匹配)
如果存在/document/xxx.pdf这类已经带后缀的资源需要正常访问,可添加后缀排除规则:
RewriteEngine On RewriteCond %{REQUEST_URI} ^/document/ # 排除所有已带2-5位后缀的请求 RewriteCond %{REQUEST_URI} !\.[a-zA-Z0-9]{2,5}$ RewriteRule ^/document/(.*)$ /content/dam/app/document/$1.docx [L,PT]
可选:长路径自动跳转短路径
如果需要让访问原始长路径的用户自动跳转到短URL(做SEO路径归一化),可添加如下301跳转规则:
# 匹配AEM原始长路径 RewriteCond %{REQUEST_URI} ^/content/dam/app/document/(.*)\.docx$ # 跳转至对应短URL RewriteRule ^/content/dam/app/document/(.*)\.docx$ /document/$1 [L,R=301]
内容的提问来源于stack exchange,提问作者Confused Developer
相关产品推荐
相关产品推荐

