RewriteRule- 用于选择字符串的正则表达式
Posted
技术标签:
【中文标题】RewriteRule- 用于选择字符串的正则表达式【英文标题】:RewriteRule- regex for selecting a string 【发布时间】:2013-03-01 17:54:21 【问题描述】:抱歉问题的标题不好。
我的问题是我只想对以下 3 个 url 模式执行内部重写
localhost/abc
localhost/def
localhost/xyz
替换为:
localhost/***/abc
localhost/***/def
localhost/***/xyz
我尝试为任何字符串——^(.*)$ 编写一个正则表达式。 RewriteRule 在下面
RewriteRule ^(.*)$ /***/$1
但它在无限循环中运行并搜索url
localhost/***/abc/abc/abc/abc...
我想要一个正则表达式,它只检测 3 个字符串中的任何一个 --> "abc"、"def"、"xyz" 然后将附加到最终 url
【问题讨论】:
【参考方案1】:仅检测这些字符串的正确方法是将它们包含在OR
组(abc|def|xyz)
中:
RewriteEngine On
RewriteRule ^(abc|def|xyz)$ ***/$1 [L]
您的尝试被抛出了重写循环,因为(.*)
匹配所有内容,包括stackoverlfow
。在 OR
组之前加上 ^
可确保它仅在 URI 的开头匹配。
【讨论】:
以上是关于RewriteRule- 用于选择字符串的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
伪静态规则写法RewriteRule-htaccess详细语法使用
如何在 Apache RewriteRule 中向正则表达式添加 +(加号)?
伪静态规则写法RewriteRule-htaccess详细语法使用