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名称.但在那种情况下它无法应用..
任何人都可以建议一些可以提供帮助
如果您想将规则应用于特定域,您可以添加此条件
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来避免使用它