如果条件不匹配,则重写规则

jco*_*ahd 46 apache mod-rewrite

如果URL 与"论坛"路径匹配,我该如何执行规则?

例如:

RewriteCond IF URL IS NOT forums
RewriteRule !\.(js|gif|css|jpg|png)$ %{DOCUMENT_ROOT}/index.php [L]
Run Code Online (Sandbox Code Playgroud)

mar*_*pet 73

Apache RewriteCondRewriteRule指令支持感叹号指定不匹配的模式:

您可以在模式字符串前加上'!' 字符(感叹号)指定不匹配的模式.

这应该工作:

RewriteCond %{REQUEST_URI} !^/forums.*
RewriteRule !\.(js|gif|css|jpg|png)$ /index.php [L]
Run Code Online (Sandbox Code Playgroud)

- >重定向所有不以论坛开头的请求,而不是以列出的内容结尾到index.php

  • 值得注意的是,处理顺序是(1)检查RewriteRule是否匹配模式,然后,只有匹配时:(2)返回到第一个关联的RewriteCond并检查它是否匹配.(并继续任何后续的RewriteConds).因此,在上面的示例中,按时间顺序排列的描述是针对所有不以(.js,.gif,.css,.jpg,.png)结尾的请求...其URL不以"/ forums"开头.转发到index.php(并且,按[L],忽略任何可能影响请求的后续RewriteRules.)HTH :) (12认同)
  • @TamásBolvári 在这个例子中,顺序可能并不重要,但这不是 cweekly 在他的评论中提出的重点(我认为这就是你所指的)。只是答案中的“描述”与实际发生的情况是相反的。创建有效的规则时,了解处理顺序非常重要。 (2认同)