RewriteRule- regex用于选择字符串

时间:2013-03-13 16:44:06

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

对不起这个问题的错误标题。

我的问题是我只想对以下3个网址模式进行内部重写

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”,然后将附加到最终网址

1 个答案:

答案 0 :(得分:3)

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

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

您的尝试被抛入重写循环,因为(.*)匹配所有,包括stackoverlfow。使用OR^组之前确保它仅在URI的开头匹配。