【问题标题】:Conditional Rewrite in Apache 2: are these two Identical?Apache 2 中的条件重写:这两个相同吗?
【发布时间】:2011-04-04 11:07:55
【问题描述】:

可以...

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]

?

如果是,它们的功能是否完全相同?
非常感谢您提出建议/改进。

【问题讨论】:

  • 谢谢@Prix,看来是这样!如果你把它作为答案,我会 +1 接受它!
  • 你可以缩短它:^/folder[1-3]/
  • 此外,请注意,在每种情况下,您的 URI 都必须始终以斜杠结尾,如果您希望它是可选的,请将结尾斜杠 / 更改为 / ?。问号 ? 代表出现在其前面的文字 01。在这种情况下是一个斜线。

标签: regex apache mod-rewrite apache2 conditional


【解决方案1】:

它们是一样的,| 代表OR,所以如果它以/folder1//folder2//folder3/ 开头,请执行重定向。

所以是的,它会更短并且可以满足您的需求。

正如 Pekalski 建议的那样,您可以通过以下方式缩短它:

^/folder[1-3]/

更多示例和参考可以在以下位置找到: http://semlabs.co.uk/journal/mod_rewrite-quick-reference-and-cheat-sheet

【讨论】:

    猜你喜欢
    • 2021-12-03
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多