【问题标题】:RewriteRule- regex for selecting a stringRewriteRule- 用于选择字符串的正则表达式
【发布时间】:2013-03-01 17:54:21
【问题描述】:

抱歉问题的标题不好。

我的问题是我只想对以下 3 个 url 模式执行内部重写

localhost/abc
localhost/def
localhost/xyz

替换为:

localhost/stackoverflow/abc
localhost/stackoverflow/def
localhost/stackoverflow/xyz

我尝试为任何字符串——^(.*)$ 编写一个正则表达式。 RewriteRule 在下面

RewriteRule  ^(.*)$ /stackoverflow/$1

但它在无限循环中运行并搜索url

localhost/stackoverflow/abc/abc/abc/abc...

我想要一个正则表达式,它只检测 3 个字符串中的任何一个 --> "abc"、"def"、"xyz" 然后将附加到最终 url

【问题讨论】:

    标签: regex apache mod-rewrite url-rewriting httpd.conf


    【解决方案1】:

    仅检测这些字符串的正确方法是将它们包含在OR(abc|def|xyz) 中:

    RewriteEngine On
    RewriteRule ^(abc|def|xyz)$ stackoverflow/$1 [L]
    

    您的尝试被抛出了重写循环,因为(.*) 匹配所有内容,包括stackoverlfow。在 OR 组之前加上 ^ 可确保它仅在 URI 的开头匹配。

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 2019-06-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多