很难的Rewrite的规则问题



QUOTE:
原帖由 FinalBSD 于 2007-1-6 18:30 发表
搞定了,^_^


RewriteCond  %{THE_REQUEST} ^[A-Z]{3,9}\ /swf/([^&]+)\.swf\?member_name=([^&]+)&album_id=([^&]+)\ HTTP/
RewriteRule     ^/swf/([^&]+)\.swf$ [url ...

O0o。.,我钻到RewriteRule的牛角尖去了,忘记了这条:
RewriteCOnd匹配之中:
RewriteRule反向引用: 引用方法是
$N


QUOTE:
原帖由 HonestQiao 于 2007-1-6 21:17 发表


O0o。.,我钻到RewriteRule的牛角尖去了,忘记了这条:
RewriteCOnd匹配之中:
RewriteRule反向引用: 引用方法是
$N

是%N

小乔晚节不保了


QUOTE:
原帖由 FinalBSD 于 2007-1-6 22:27 发表

是%N

小乔晚节不保了

晕,你非要我把原文拷贝下来啊:

QUOTE:
TestString是一个纯文本的字符串,但是还可以包含下列可扩展的成分:

    * RewriteRule反向引用 ,引用方法是:

      $N
      (0 <= N <= 9)引用当前(带有若干RewriteRule指令的)RewriteCond中的与Pattern匹配的分组成分(圆括号!)。
    * RewriteCond反向引用 ,引用方法是:

      %N
      (1 <= N <= 9)引用当前若干RewriteCond条件中最后符合的条件中的分组成分(圆括号!)。
    * RewriteMap扩展 ,引用方法是:

      ${mapname:key|default}
      细节请参见RewriteMap 指令。
    * 服务器变量 ,引用方法是:

      %{NAME_OF_VARIABLE}
      NAME_OF_VARIABLE可以是下表列出的字符串之一:
      HTTP头        连接与请求       
      HTTP_USER_AGENT
      HTTP_REFERER
      HTTP_COOKIE
      HTTP_FORWARDED
      HTTP_HOST
      HTTP_PROXY_CONNECTION
      HTTP_ACCEPT
              REMOTE_ADDR
      REMOTE_HOST
      REMOTE_PORT
      REMOTE_USER
      REMOTE_IDENT
      REQUEST_METHOD
      SCRIPT_FILENAME
      PATH_INFO
      QUERY_STRING
      AUTH_TYPE
             
      服务器自身        日期和时间        其它
      DOCUMENT_ROOT
      SERVER_ADMIN
      SERVER_NAME
      SERVER_ADDR
      SERVER_PORT
      SERVER_PROTOCOL
      SERVER_SOFTWARE
              TIME_YEAR
      TIME_MON
      TIME_DAY
      TIME_HOUR
      TIME_MIN
      TIME_SEC
      TIME_WDAY
      TIME
              API_VERSION
      THE_REQUEST
      REQUEST_URI
      REQUEST_FILENAME
      IS_SUBREQ
      HTTPS

      这些变量都对应于类似命名的HTTP MIME头、Apache服务器的C变量、Unix系统中的struct tm字段,其中的大多数在其他的手册或者CGI规范中都有说明。 其中为mod_rewrite所特有的变量如下:

      IS_SUBREQ
          如果正在处理的请求是一个子请求,它将包含字符串"true",否则就是"false"。模块为了解析URI中的附加文件,可能会产生子请求。
      API_VERSION
          这是正在使用中的Apache模块API(服务器和模块之间内部接口)的版本,其定义位于include/ap_mmn.h中。此模块API版本对应于正在使用的Apache的版本(比如在Apache 1.3.14的发行版中这个值是19990320:10)。 通常,对它感兴趣的是模块的开发者。
      THE_REQUEST
          这是由浏览器发送的完整的HTTP请求行(比如:"GET /index.html HTTP/1.1"。它不包含任何浏览器发送的其它头信息。
      REQUEST_URI
          这是在HTTP请求行中所请求的资源(比如上述例子中的"/index.html"。
      REQUEST_FILENAME
          这是与请求相匹配的完整的本地文件系统的文件路径名。
      HTTPS
          如果连接使用了SSL/TLS,它将包含字符串"on",否则就是"off"(无论mod_ssl是否已经加载,该变量都可以安全的使用)。



QUOTE:
重写规则中的Substitution是当原始URL与Pattern相匹配时,用来替代(或替换)的字符串。除了纯文本,还可以包含:

   1. 对Pattern的反向引用($N)
   2. 对最后匹配的RewriteCond的反向引用(%N)
   3. 规则条件测试字符串(%{VARNAME})中的服务器变量
   4. 映射函数调用(${mapname:key|default})