重写基本URL并使用mod_rewrite向其添加特定单词

use*_*087 5 mod-rewrite rewrite url-rewriting

以下是我的要求:假设我有一个来自浏览器的URL

http://test.aroa.com/mance
Run Code Online (Sandbox Code Playgroud)

我需要在性能和.html之后添加/ xyz/abc/xy /,即使用mod_rewrite的重写规则将其更改为下面的URL,一旦它命中AEM(或apache web-server)中的调度程序

http://test.aroa.com/xyz/abc/xy/mance.html
Run Code Online (Sandbox Code Playgroud)

为此我写了下面的重写规则以及一些重写条件(重写条件不在这里)

RewriteRule ^(/.*)$ /xyz/abc/xy$1.html [P,L]
Run Code Online (Sandbox Code Playgroud)

它适用于此站点,但通过将/ xyz/abc/xy添加到其他URL也会混淆其他一些功能

您能否建议我使用哪种方式来限制仅针对//test.aroa.com/ URL的URL重写,而不影响任何其他URL

我尝试将规则放在目录标记内,并在其中包含doc-root名称.但在那种情况下它无法应用..

任何人都可以建议一些可以提供帮助

Jus*_*man 2

如果您想将规则应用于特定域,您可以添加此条件

RewriteCond %{HTTP_HOST} ^test\.aroa\.com$ [NC]
Run Code Online (Sandbox Code Playgroud)

另外,一个小的语义细节:你不需要Lflag with Pflag (它是多余的,因为P包含L

最后,你的代码应该是这样的

RewriteCond %{HTTP_HOST} ^test\.aroa\.com$ [NC]
# your other conditions
RewriteRule ^/?(.+)$ /xyz/abc/xy/$1.html [P]
Run Code Online (Sandbox Code Playgroud)

备注:我认为您不需要使用mod_proxy(P标志) 特别是因为它比简单的内部重写慢。如果您的(子)域共享相同的文档根目录,那么您可以通过将Pflag 替换为Lflag来避免使用它