Hypertext Access file 流行的重写标志

示例

F |禁止

与相似Deny,此标志强制服务器立即向请求的浏览器或客户端返回403禁止状态代码。

示例:拒绝访问以结尾的请求exe:

RewriteRule .exe$ - [F]

G |消失

如果所请求的资源过去是可用的,但不再可用,则可以使用此标志强制服务器立即为请求的浏览器或客户端返回410 Gone状态代码。

示例:告诉访客不再存在旧产品:

RewriteRule ^old-product.html$ - [G]

L | last

在大多数情况下,除之外.htaccess,此标志指示mod_rewrite停止处理当前条件/规则集,方式last与break(分别为Perl和C)相同。

但是,在.htaccess或<Directory>上下文中,使用RewriteRule带有该标志重写的请求将被传递回URL解析引擎以进行进一步处理。这样,重写的URI可能由相同的上下文处理,并且可能会进一步更改。

通常的建议是使用该END标志不仅可以停止处理当前条件/规则集,还可以防止在这些上下文中进行任何进一步的重写。

注意:上面讨论的F和G标志都L隐式使用,因此您无需单独指定它们。

N |下一个

该标志将从头开始重新运行重写过程,从第一个条件/规则集开始重新开始。这次,要匹配的URL不再是原始URI,而是上一个规则集返回的重写的URI。使用此标志重新启动重写过程。

警告:请谨慎使用此标志,因为它可能导致无限循环!

NC |无案

这指示mod_rewrite匹配Pattern的RewriteRule而不区分大小写。为了澄清,MyIndex.html并且myindex.html将由模块同样的事情算是。此外,此标志允许您a-z代替A-Za-z正则表达式使用。

R |重定向

此标志用于将HTTP重定向响应发送到发出请求的浏览器/客户端。

默认情况下,如果未提供任何代码,则将返回带有302 Found(类似于临时重定向)状态代码的重定向响应。如果您希望使用更永久的重定向,则应使用302(301移动永久)状态代码。

通常,此标志只能使用300-399范围内的状态码。如果使用了超出此范围的状态码(完全可以接受),则替换字符串将被丢弃,并且重写将停止,就像使用了该L标志一样。在某些情况下,即使请求指向现有资源,这也是强制404 Not Found响应的便捷方法。

示例:发出302找到的重定向响应:

RewriteRule ^bus$ /train [R,L]

示例:发出301移动永久重定向响应:

RewriteRule ^speed-train$ /hyperloop [R=301,L]

示例:强制未找到404

RewriteRule ^blip$ - [R=404,L]