对不起这个问题的错误标题。
我的问题是我只想对以下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”,然后将附加到最终网址
答案 0 :(得分:3)
仅检测这些字符串的正确方法是将它们封装在OR
组(abc|def|xyz)
中:
RewriteEngine On
RewriteRule ^(abc|def|xyz)$ stackoverflow/$1 [L]
您的尝试被抛入重写循环,因为(.*)
匹配所有,包括stackoverlfow
。使用OR
在^
组之前确保它仅在URI的开头匹配。