我在.htaccess中有一些规则,我试图在新的IIS7重写模块区域中实现它们。
RewriteCond %{REQUEST_FILENAME} ^.*(mp3|m4a|jpeg|jpg|gif|png|bmp|pdf|doc|docx|ppt|pptx|)$
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in.*$ [NC]
RewriteRule . - [R=403,L]
有谁知道我该怎么做?
由于
答案 0 :(得分:1)
令人惊讶的是:
<rule name="BlockUnauthorized">
<match url="."/>
<conditions>
<add input="{REQUEST_FILENAME}" type="Pattern"
pattern="^.*(mp3|m4a|jpeg|jpg|gif|png|bmp|pdf|doc|docx|ppt|pptx|)$" />
<add input="{HTTP_COOKIE}" type="Pattern"
pattern="^.*wordpress_logged_in.*$" negate="true" ignoreCase="true" />
</conditions>
<action type="CustomResponse" statusCode="403"
statusReason="You need to log in, fool!"
statusDescription="You need to log in, fool!" />
</rule>
直接翻译的规则,因此您对原始规则的任何问题也可能会出现在此处。
一个问题是REQUEST_FILENAME
上的第一个模式;它以|)
结尾,这使得整个组都是可选的。由于.*
会匹配任何内容,因此它等同于^.*$
。也就是说,它将始终匹配任何网址。
如果您只想匹配以这些扩展名结尾的文件,可以使用:
<match url="." isFile="true"/>
...
<add input="{REQUEST_FILENAME}" type="Pattern"
pattern="\.(mp3|m4a|jpeg|jpg|gif|png|bmp|pdf|doc|docx|ppt|pptx)$"
ignoreCase="true" />
isFile="true"
标记仅匹配指向现有文件的网址。模式中的\.
将匹配一个点。
更多信息: