1

很抱歉这个问题的标题不好。

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

localhost/abc
localhost/def
localhost/xyz

替换为:

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

我试图为任何字符串写一个正则表达式——^(.*)$。重写规则如下

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

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

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

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

4

1 回答 1

3

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

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

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

于 2013-03-13T16:46:12.387 回答