【问题标题】:rewrite base URL and add a specific word to it using mod_rewrite使用 mod_rewrite 重写基本 URL 并添加一个特定的词
【发布时间】:2016-02-25 21:48:45
【问题描述】:

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

http://test.aroa.com/mance

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

http://test.aroa.com/xyz/abc/xy/mance.html

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

RewriteRule ^(/.*)$ /xyz/abc/xy$1.html [P,L]

它适用于本网站,但也会通过将 /xyz/abc/xy 添加到其他 URL 来破坏其他一些功能

你能建议我一些方法吗?我可以限制 URL 重写仅用于 //test.aroa.com/ URL,而不影响任何其他 URL

我尝试将规则放在带有 doc-root 名称的目录标记中。但在那种情况下它无法应用..

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

【问题讨论】:

    标签: mod-rewrite url-rewriting rewrite


    【解决方案1】:

    如果您想在特定域上应用您的规则,您可以添加此条件

    RewriteCond %{HTTP_HOST} ^test\.aroa\.com$ [NC]
    

    另外,一个小的语义细节:你不需要带有P 标志的L 标志(这是多余的,因为P 包括L

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-08
      • 2010-12-15
      • 2011-04-14
      • 1970-01-01
      • 2014-07-04
      • 2020-04-02
      相关资源
      最近更新 更多