Apache 2中的条件重写:这两个是相同的吗?

问题描述:

可以...Apache 2中的条件重写:这两个是相同的吗?

RewriteCond %{REQUEST_URI} ^/folder1/ [OR] 
RewriteCond %{REQUEST_URI} ^/folder2/ [OR] 
RewriteCond %{REQUEST_URI} ^/folder3/ 
RewriteRule (.*)/[R=301,L] 

...改写为...

RewriteCond %{REQUEST_URI} ^/(folder1|folder2|folder3)/ 
RewriteRule (.*)/[R=301,L] 

如果是这样,他们是绝对相同的功能?
建议/改进非常感谢。

+0

感谢@Prix,这似乎是这样的!如果你把它作为答案,我会+1接受它! – Sam 2011-04-04 11:28:07

+2

你可以缩短它:'^/folder [1-3] /' – 2011-04-04 11:29:09

+1

此外,请注意,在每种情况下,您的URI必须始终以斜杠结尾,如果您希望它是可选的,请更改结尾斜杠,**/**, 至 **/?**。问号** ** **代表** 0 **或** 1 **出现在它之前的文字。在这种情况下,斜线。 – 2011-04-04 11:33:52

他们是同样的事情,在|代表OR所以如果它开始与/folder1//folder2//folder3/做重定向。

因此,它会更短,并满足您的需求。

由于Pekalski建议你可以把它用更短:

^/folder[1-3]/ 

几个例子和参考文献,可以发现: http://semlabs.co.uk/journal/mod_rewrite-quick-reference-and-cheat-sheet