Apache2下URL Rewrite配置求助:将/app内部改写为/appLegacy
正确的Apache2内部URL改写配置方案
你需要调整Rewrite规则,确保是内部改写而非外部重定向,同时精准匹配目标路径并保留动态的accounturi部分。将以下配置放在你的<VirtualHost *:443>块中:
RewriteEngine On # 匹配/app/[动态accounturi]/services(可选结尾斜杠),不区分大小写 RewriteRule ^/app/([^/]+)/services/?$ /appLegacy/$1/services [L,NC]
原规则的问题说明
- 触发外部重定向:原规则中
RewriteRule使用了完整的https://%{HTTP_HOST}/appLegacy/,这会强制浏览器跳转,地址栏会发生变化,不符合内部改写的需求。内部改写只需指定目标路径,无需带域名。 - 匹配范围过宽:原
RewriteCond匹配所有以services结尾的URI,没有限定必须以/app/开头,会误匹配其他无关路径。 - 丢失动态参数:原规则没有捕获并传递
accounturi这个动态值,无法完成精准的路径映射。
规则参数解释
[^/]+:精准捕获accounturi部分,确保只匹配/app/和/services之间的非斜杠字符,适配动态路径需求。/?:允许请求路径结尾带或不带斜杠,提升规则兼容性。[L]:标记为最后一条匹配规则,避免后续规则干扰当前改写逻辑。[NC]:忽略路径大小写,适配不同大小写的请求场景。
你已配置的<VirtualHost *:80> HTTPS重定向规则无需修改,可以继续使用。
内容的提问来源于stack exchange,提问作者Santhosh Kumar
相关产品推荐
相关产品推荐

