说我有以下.htaccess文件:
RewriteEngine On
RewriteCond %{HTTP_COOKIE} name=value [NC]
RewriteRule ^image01.gif$ http://www.domain.tld/images/partner/image01.gif [NC,QSA]
RewriteCond %{HTTP_COOKIE} name=value [NC]
RewriteRule ^image02.gif$ http://www.domain.tld/images/partner/image02.gif [NC,QSA]
NC
和QSA
的含义是什么?
此外,不是重复相同的RewriteCond
两次,而是仅使用它一次,并将其应用于RewriteRule
两个?
最后,如果上面的.htaccess位于http://www.domain.tld/images/,为什么这样的RewriteRule不起作用?:
RewriteRule ^image02.gif$ /images/partner/image02.gif [NC,QSA]
或许这个?:
RewriteRule ^image02.gif$ partner/image02.gif [NC,QSA]
答案 0 :(得分:4)
方括号选项记录在RewriteRule manual page:
中'nocase | NC'(无案例):
这使得Pattern不区分大小写,忽略了差异 当Pattern与当前URL匹配时,在'A-Z'和'a-z'之间。
'qsappend | QSA'(查询字符串追加):
此标志强制重写引擎附加查询字符串部分 取代字符串的 现有的字符串,而不是替换 它。如果要添加更多内容,请使用此选项 通过重写将数据写入查询字符串 规则。
据我所知,RewriteCond directives会影响他们之前的RewriteRule。如果您在主配置文件中设置规则,您可以在文件中编写公共指令并include多次,但这不是.htaccess
文件中的选项,抱歉。
你的指示对我有用,虽然你可能是这个意思:
RewriteRule ^image02\.gif$ /images/partner/image02.gif [NC,QSA]
你是如何准确测试的?
答案 1 :(得分:1)
NC适用于No Case,意味着它可以是大写或小写,它会将您带到同一页面。
QSA用于查询字符串追加。对这一点不太确定,但是快速搜索http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html会对这一点有所了解。